Я новичок в VBA в Excel и испытываю некоторые трудности в понимании принципов использования циклов для объектов ActiveX в модулях и пользовательских формах. У меня есть несколько раскрывающихся списков, которые были созданы с использованием ActiveX ComboBox в электронной таблице под названием Summary. После работы с этими списками, я хотел бы сбросить их все в исходное положение и удалить содержимое из некоторых других ячеек, используя кнопку на той же странице. Таким образом, я бы смог использовать этот файл в качестве универсального шаблона. Вот короткий пример, который, кажется, работает:
Private Sub Clear_Click()
Worksheets("Summary").ComboBox1.ListIndex = 0
Worksheets("Summary").ComboBox2.ListIndex = 0
Worksheets("Summary").ComboBox3.ListIndex = 0
Worksheets("Summary").Range("B4,B6:B8,B10:B12,B18:B21").Select
Selection.ClearContents
End Sub
Но, поскольку все блоки следуют шаблону, и у меня много блоков, я пытался реализовать следующее l oop, используя OLEObjects или Controls ( L oop через Comboboxes VBA ). В обоих случаях я испытываю ошибку либо 1004, либо 438 (объект не поддерживает свойство или метод) соответственно.
Private Sub CommandButton1_Click()
Dim cmb As ComboBox, i As Integer
For i = 1 To 3
Sheets("Summary").Controls ("ComboBox" & i).ListIndex = 0
‘ Sheets("Summary").OLEObjects("ComboBox" & i).ListIndex = 0
Next i
End Sub
Не могли бы вы направить меня к решению, использующему циклы, или порекомендовать лучший метод генерации отбрасывания списки шаблонов с возможностью сброса?