Коди Грей прав, но это бесполезно, если вы не знаете, что такое массив элементов управления.
Ниже приведен Excel VBA, но я сделал то же самое с Access VBA, но не в последнее время. Я думаю, что синтаксис тот же, но я не гарантирую.
Я создал рабочую книгу, вставил форму, вытащил на нее несколько элементов управления и запустил следующий код:
Option Explicit
Sub TestControls()
Dim InxC As Long
Load UserForm1
With UserForm1
For InxC = 0 To .Controls.Count - 1
Debug.Print .Controls(InxC).Name
Next
End With
End Sub
Вывод в ближайшее окно был:
Label1
CommandButton1
ComboBox1
CommandButton2
OptionButton1
Вы можете видеть, что Label1.xxx
точно такой же, как .Controls(0).xxx
. Я называю свои элементы управления систематически, чтобы я мог выполнять код как:
With UserForm1
For InxC = 0 To .Controls.Count - 1
If Mid(.Controls(InxC).Name,1,5) = "lblXx" Then
' Code to set properties of all lblXx controls
End If
Next
End With
Я использую эту функцию чаще всего, когда я не знаю, сколько из определенного типа управления мне нужно. Я создаю, скажем, 10 из них, что больше, чем мне когда-либо понадобится, и делаю их всех невидимыми.
Во время выполнения я делаю те, которые мне нужны, видимыми и при необходимости устанавливаю их верхние и левые свойства.