VBA

4 отговора 184 прегледа
#1

VBA

В Няколко Textbox - a въвеждам данни. Как при някакво условие,което се изпълнява в цикъл да посоча TEXTBOX-a.
Примерно:
For I = 1 to 20
if a(I) = 1 then goto t1
next
....
....

t1: и тук искам да работя с този Textbox,който отговаря на I. Ако I= 1 с Textbox1,
ако I = 2 с Тextbox2 и т.н.

Чао и благодаря.

Отговор
в отговор на KOKO #2

Re: VBA

Най-лесно ще е с control array
Праскаш във формата един текстбокс, след това го копираш и го пействаш пак - ВБ ще те пита искаш ли да създадеш control array
След това използваш нещо подобно
Private Sub Command1_Click()
For i = 0 To Text1.Count - 1
Text1.Item(i).Text = "textbox #" & Trim(Str(i))
Next
End Sub

Отговор
в отговор на KOKO #3

Re: VBA

Сори, не видях че питаш за ВБА. Там няма control arrays но нещо подобно може да стане с пропертито Tag. Слагаш на текстбоксовете Tag = 0,1,2 и т.н.

Private Sub CommandButton1_Click()
For i = 0 To Me.Controls.Count - 1
If (Me.Controls.Item(i).Tag = Trim(Str(i))) Then
Me.Controls.Item(i).Text = "textbox #" & Trim(Str(i))
End If
Next
End Sub

Отговор
в отговор на Microsoft #4

Re: VBA

ДО Мicrosoft - Благодаря. По същия начин може ли да стане и за Combobox ,
Label. А за Sheet1,Sheet2 и т.н.??

Отговор
в отговор на KOKO #5

Re: VBA

за Combobox , Label и други контроли - можеш да ги манипулираш по същия начин, само внимавай да не сетнеш несъществуващо проперти (напр. .Техт за лейбъл)
За Sheet1 .. е по-лесно
ThisWorkbook.Sheets(i).Activate

За да видиш как се прави нещо с ВБА, кликни Tools|Macro|Record New Macro
След това правиш каквото ти трябва, напр. селектираш клетки, сменяш шит и т.н., след това спираш записването на макроса и гледаш кода който ексел е генерирал автоматично.

Отговор