Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > цикл по однотипным объектам формы


Автор: kb-nn 14.10.2004, 11:29
слушайте.
какможно организовать цикл по всем объектам заданного типа на форме?
например обойти все Label ы

Автор: ~FoX~ 14.10.2004, 12:11
В свойстве index своих объектов указываешь номера от 0 до n
И перебераешь так

Код

for i = 0 to n
 Form1.Label1(i).Caption = "123"
next n


Только имена у них должны быть одинаковые sad.gif но зато очь удобно

Автор: kb-nn 14.10.2004, 12:26
спасибо.!!!!
но у меня так не получится.
мне надо для VBA
в VBA нет у объектов формы свойства Index
но как-то можно было еще.
проход по всем объектам формы вообще,и если тип= "label" то что-то делать.

Автор: Akina 14.10.2004, 12:57
Цитата
мне надо для VBA

Тебе в "Программирование, связанное с MS Office". Попроси модератора перенести.

А вообще у формы среди ее свойств есть коллекция контролов, каждый из которых имеет свойство "Тип".

Автор: ~FoX~ 14.10.2004, 12:58
For Each...Next - по моему то что тебе надо

Автор: cardinal 14.10.2004, 14:23
Модератор: Тема перемещена из VB.

Автор: kb-nn 14.10.2004, 14:37
про For Each этои так понятно.
как получить в массиве все объекты формы?
как из них выделить объекты какого-то конкретного типа?

Автор: cardinal 14.10.2004, 14:50
В VB так:
Код
Private Sub Command1_Click()
Dim x As CommandButton
For Each x In Form1.Controls
   Debug.Print x.Caption
Next
End Sub

Автор: Staruha 16.10.2004, 10:23
Может ты просто хочешь изменить текст тогда
UserForm2.Label1.Caption = "Меняем текст"

Автор: Staruha 16.10.2004, 11:46
Или так?
Код
Private Sub CommandButton1_Click()
Dim x As Object
For Each x In Form.Controls
TextBox1.Value = Left(x.Name, 5)
If TextBox1.Value = "Label" Then
TextBox2.Value = TextBox2.Value + 1
MsgBox "Óðà!ß íàøåë Label" & TextBox2.Value

End If
Next

End Sub

Добавлено @ 11:47
Private Sub CommandButton1_Click()
Dim x As Object
For Each x In Form.Controls
TextBox1.Value = Left(x.Name, 5)
If TextBox1.Value = "Label" Then
TextBox2.Value = TextBox2.Value + 1
MsgBox "Ура!Я нашел Label" & TextBox2.Value

End If
Next

End Sub

Автор: Staruha 16.10.2004, 18:50
:qstn

Автор: boevik 18.10.2004, 17:16
Если надо пробежать только по labels, то
Код
dim obj as Control
for each obj in Forms("myForm").Controls
  if typeof obj is Label then Msgbox obj.caption
next

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)