В прикреплённом файле - пример макроса для автоматического создания на форме элементов управления.
Благодаря использованию модуля класса, всем создаваемым элементам управления (в данном случае это CheckBox-ы) назначается один и тот же обработчик событий.
Для проверки запустите форму нажатием кнопки на листе Excel, и пощелкайте на чекбоксах на разных вкладках формы.
Код модуля класса:
Public WithEvents CheckBox As MSForms.CheckBox Public MPname As String Public MPindex As Integer Public Index As Integer Sub CheckBox_Change() msg = "Изменено состояние чекбокса номер " & Me.Index & vbNewLine & vbNewLine msg = msg & "на вкладке " & Me.MPname & " (индекс вкладки = " & Me.MPindex & ")" _ & vbNewLine & vbNewLine & vbNewLine msg = msg & "Новое состояние: " & Me.CheckBox.Value MsgBox msg, vbInformation, "Вы изменили состояние чекбокса!" End Sub
При запуске формы на неё добавляются элементы управления:
Dim MyCheckBox As chb, coll As Collection Private Sub UserForm_Initialize() Set coll = New Collection For m = 0 To Me.MultiPage1.Pages.Count - 1 mn = F.MultiPage1(m).Caption For i = 1 To 7 Set MyCheckBox = New chb Set MyCheckBox.CheckBox = F.MultiPage1(m).Controls.Add("forms.CheckBox.1") With MyCheckBox With .CheckBox .AutoSize = True: .Left = 30: .Top = 20 + i * 20: .WordWrap = False .Caption = "Это чекбокс номер " & i & " на вкладке " & mn End With .MPindex = m: .Index = i: .MPname = mn End With coll.Add MyCheckBox Next i Next m End Sub
Комментарии
Возможно ли также добавить автоматически добавить элементы RefEdit ? Делаю по аналогии, но ничего не выходит.
Отправить комментарий