#excel #vba #combobox #controls #concatenation
#excel #vba #combobox #элементы управления #объединение
Вопрос:
Я составляю анкету с использованием VBA Excel, используя выпадающие списки. У меня есть 36 списков со списком (cmb1, cmb2, cmb3 … cmb36), и я использую цикл For для заполнения моих списков со списком из моего листа Excel «Параметры», используя этот код:
Private Sub UserForm_Initialize()
For i = 1 To 36
Controls("cmb" amp; i).RowSource = "Options!A1:A5"
Next i
End sub
Это работает, но я хочу сделать что-то подобное, используя вместо этого модули (т. Е. Заполнение выпадающих списков массивом из вызова функции из модуля вместо их инициализации в UserForm), но я не могу использовать функцию Controls в модулях, поэтому я понятия не имею, как объединить «cmb»и «i» и сделайте что-то подобное
Любая помощь будет высоко оценена, спасибо!
Ответ №1:
Вот один из способов выполнить задачу:
Код пользовательской формы
Option Explicit
Private Sub UserForm_Initialize()
InitControls Me
End Sub
Код модуля
Option Explicit
Public Sub InitControls(ByVal MyForm As UserForm)
Dim i As Integer
For i = 1 To 36
MyForm.Controls("cmb" amp; i).RowSource = "Options!A1:A5"
Next i
End Sub