Добрый вечер! Вопрос такой. Имеется несколько управляющих элементов с именами Label1, Label2, ... Label19
Можно изменить свойства элемента обратившись к нему по имени:
Label19.Caption = ComboBox1.Value
А можно ли как нибудь автоматизировать обращение к элементам управления? Что бы цифры содержались в переменной или даже имя всего элемента. И используя переменную изменять свойства этого управляющего элемента.
Опишите, для какой цели вам это нужно. Правильнее задавать вопрос, указывая конечную цель.
Например, хочу сделать что-то типа такого калькулятора перевода. У меня там много однотипных элементов Label или textbox надпись которым присваивается исходя из алгоритма. Вот и хотелось бы зациклить этот процесс, а не составлять линейную программу из 11 присваиваний.
[вложение удалено администратором]
Вариант 1. Обращение к контролам с помощью объекта "Controls"
В этом варианте нужно, чтобы у лейбелов имена имели одинаковый корень (в этом пример у лейбелов корень "Label"), а после корня должен быть порядковый номер.
Private Sub CommandButton1_Click()
Dim i As Long
For i = 1 To 2 Step 1
Me.Controls("Label" & i).Caption = "Caption"
Next i
End Sub
Вариант 2. Обращение к контролам с помощью массива
Массив можно заполнять без цикла. Это я привёл пример с циклом.
Private Sub CommandButton1_Click()
Dim arr() As MSForms.Label, i As Long
'1. Создание ячеек в массиве.
ReDim arr(1 To 2)
'2. Привязка контролов к массиву.
For i = 1 To UBound(arr) Step 1
Set arr(i) = Me.Controls("Label" & i)
Next i
'3. Работа с контролами через массив.
For i = 1 To UBound(arr) Step 1
arr(i).Caption = "Caption"
Next i
End Sub
Спасибо огромное, сейчас попробую!