Есть ли более эффективный способ написать этот код пользовательской формы?EXCEL VBA: код пользовательской формы, улучшение повторяющегося кода
Private Sub Userform_Initialize()
'do stuff
With Item1_DropDown
.AddItem "Monday"
.AddItem "Tuesday"
.AddItem "Wednesday"
End With
With Item2_DropDown
.AddItem "Monday"
.AddItem "Tuesday"
.AddItem "Wednesday"
End With
With Item3_DropDown
.AddItem "Monday"
.AddItem "Tuesday"
.AddItem "Wednesday"
End With
'and so on, and so on. (I have about fifty of these 'With/End With' blocks)
End Sub
В принципе, я хотел бы иметь возможность прекратить записывать многие из этих блоков «С/с С». Прямо сейчас, у меня есть этот тип кода в четырех моих аналогично построенных пользовательских формах. Это занимает столько текстового пространства, и это кажется пустой тратой. Есть лучший способ сделать это?
Пожалуйста, знайте, что я никогда не писал модуль класса. Итак, если это требует решение, мне нужно будет в него поработать.
Спасибо,
Элиас
Вывести код «addItem» в отдельный элемент, который выдает раскрывающийся список в качестве параметра. Затем вы можете вызвать это как 'PopulateList Item1_DropDown'. Вы также можете упростить, перейдя через все элементы управления формы, проверив тип каждого, а затем, если это раскрывающийся список, перейдите к вашему подпрограмму для заполнения. Если у вас есть несколько типов выпадающих списков в одной и той же форме, вы можете использовать какое-то правило именования, которое вы можете использовать для определения того, как каждый обрабатывается. –
А, да; Я понимаю что ты имеешь ввиду. Я реализовал что-то подобное. В принципе, я создал цикл For, который прокручивает каждый из них с именем ComboBox и добавляет все элементы к нему. Единственное, что не касается этого, это то, что у меня есть строка кода для каждого элемента. – Elias