День добрый! Создаю юзерформу, в которой будет множество однотипных ComboBox-ов Во всех этих комбобоксах будут одинаковые списки значений: буквы от A до J и цифры от 1 до 10 И у них будут типовые имена. Для букв V1_CB1, V2_CB1, V3_CB1...; для цифр V1_CB2, V2_CB2, V3_CB2... Предварительно есть два массива со значениями и далее я заполняю комбобоксы [vba]
Код
Private Sub UserForm_Initialize() Fill_main_arrays 'заполняю массивы V1_CB1.List = aj V1_CB2.List = oneten V2_CB1.List = aj V2_CB2.List = oneten ' и т.д. End Sub
[/vba]
Похожая ситуация с OptionButtons
Вопрос: Можно ли как-то упростить, уменьшить код, чтобы не указывать каждый объект отдельно? Может можно как-то через цикл указывать имя объекта, чтобы к нему присвоить нужные значения?
День добрый! Создаю юзерформу, в которой будет множество однотипных ComboBox-ов Во всех этих комбобоксах будут одинаковые списки значений: буквы от A до J и цифры от 1 до 10 И у них будут типовые имена. Для букв V1_CB1, V2_CB1, V3_CB1...; для цифр V1_CB2, V2_CB2, V3_CB2... Предварительно есть два массива со значениями и далее я заполняю комбобоксы [vba]
Код
Private Sub UserForm_Initialize() Fill_main_arrays 'заполняю массивы V1_CB1.List = aj V1_CB2.List = oneten V2_CB1.List = aj V2_CB2.List = oneten ' и т.д. End Sub
[/vba]
Похожая ситуация с OptionButtons
Вопрос: Можно ли как-то упростить, уменьшить код, чтобы не указывать каждый объект отдельно? Может можно как-то через цикл указывать имя объекта, чтобы к нему присвоить нужные значения?Fidgy
Private Sub UserForm_Activate() For Each ctr In Me.Controls If TypeOf ctr Is MSForms.ComboBox Then If InStr(ctr.Name, "V1") Then ctr.List = aj ElseIf InStr(ctr.Name, "V2") Then ctr.List = oneten End If End If Next End Sub
[/vba]
[vba]
Код
Private Sub UserForm_Activate() For Each ctr In Me.Controls If TypeOf ctr Is MSForms.ComboBox Then If InStr(ctr.Name, "V1") Then ctr.List = aj ElseIf InStr(ctr.Name, "V2") Then ctr.List = oneten End If End If Next End Sub
Private Sub UserForm_Initialize() Dim ctr As Control Fill_main_arrays
For Each ctr In Me.Controls If TypeOf ctr Is MSForms.ComboBox Then If ctr.Name Like "V?_CB1" Then ctr.List = aj ElseIf ctr.Name Like "V?_CB2" Then ctr.List = oneten End If End If Next End Sub
[/vba]
RAN, большое спасибо!
Сделал следующим образом [vba]
Код
Private Sub UserForm_Initialize() Dim ctr As Control Fill_main_arrays
For Each ctr In Me.Controls If TypeOf ctr Is MSForms.ComboBox Then If ctr.Name Like "V?_CB1" Then ctr.List = aj ElseIf ctr.Name Like "V?_CB2" Then ctr.List = oneten End If End If Next End Sub