VBA excel — аналогичные элементы управления и функции объединения в модулях против userform?

#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