Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Обращение через массив Добавлено: 02.05.07 10:33  

Автор вопроса:  Vovka | ICQ: 345650092 
Добрый день!

Необходимо считать данные из Textbox1...Textbox50,
Каждый раз обращаться к Textbox1.Text неправильно,
Как это можно сделать через массив,

К примеру for i=1 to 50
Textbox.Text и т.д.

Подскажите как правильно это сделать.

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #1
Добавлено: 02.05.07 11:02
Можно сделать массив Textbox1

и в цикле обращаться

 myArray(i) = Textbox1(i).text

 к каждому, а можно - For Each...

Ответить

Номер ответа: 2
Автор ответа:
 ADSemenov.ru



Вопросов: 5
Ответов: 276
 Web-сайт: www.adsemenov.ru
 Профиль | | #2
Добавлено: 02.05.07 11:27
____ А разве в VBA есть массивы control'ов?

Ответить

Номер ответа: 3
Автор ответа:
 Vovka



ICQ: 345650092 

Вопросов: 2
Ответов: 4
 Профиль | | #3 Добавлено: 02.05.07 11:28
Что то не получается. помогите конкретным кодом.
К примеру если в текстбоксе нет записи , то запись равна нулю. И так надо пробежать все текст боксы. Напише код с использованием массива.

Это то немногое что я смог придумать))

Dim Textbox As String
Dim i As Integer
  For i = 1 To 84
  myArray(i) = Textbox(i)
  If Textbox(i).Text = "" Then Textbox(i).Text = 0

Заранее спасибо.

Ответить

Номер ответа: 4
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #4 Добавлено: 02.05.07 11:28
2 -АлександР-: Попался! :) У меня первый порыв точно также ответить был... но в VBA не создать массив контролов...

Ответить

Номер ответа: 5
Автор ответа:
 Vovka



ICQ: 345650092 

Вопросов: 2
Ответов: 4
 Профиль | | #5 Добавлено: 02.05.07 11:32
Значит нельзя, т.е. мне к каждому элементу обращаться надо помере надобности!!

Может есть какие альтернативы?

Ответить

Номер ответа: 6
Автор ответа:
 GenyaA



Вопросов: 0
Ответов: 185
 Web-сайт: www.genyaa.nm.ru
 Профиль | | #6
Добавлено: 02.05.07 11:55
Есть коллекция контролов.. к ней и можно обращаться, как к массиву... просто анализируя их имена.

Допустим tb() as Control

ReDim tb(me.Controls.Count)
i = 0
For each cc in me.Controls
  If Left(cc.Name,7) = "TextBox" Then
     i = i + 1
     Set tb(i) = cc 'или нужное_место(i) = cc.Value, если хотите сразу собрать значения textbox'ов.
  end if
Next cc


После этого массив tb содержит все объекты контролов TextBox формы me, а i - их количество.

Далее можно уже собрать значения контролов в массиве в цикле... или можно собрать значения непосредственно в вышеприведенном цикле...

Ответить

Номер ответа: 7
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #7
Добавлено: 02.05.07 17:05
но в VBA не создать массив контролов...
хм, а я до этого как-то и не замечал...

Впрочем GenyaA достаточно подробно описал For Each, даже доабвить нечего

Ответить

Номер ответа: 8
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #8 Добавлено: 10.05.07 02:26
Впрочем GenyaA достаточно подробно описал For Each, даже доабвить нечего

да как так? Всегда есть что добавить, а ради +1 к ответам можно и по предираться, не то что добавить :))) Вот смотри:

2 GenyaA
If Left(cc.Name,7) = "TextBox" Then
Что если я имя текстбокса нафиг переименую в blablablanax ?
Поэтому правильнее писать стоит
if typeof cc is textbox then



:))

Ответить

Номер ответа: 9
Автор ответа:
 Pavel



Вопросов: 0
Ответов: 82
 Профиль | | #9 Добавлено: 10.05.07 12:35
Что-то у меня
If TypeOF cc is TextBox then

не работает, но зато работает
If TypeName(Ctrl) = "TextBox" Then

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам