Использование классов для элементов управления на форме
|
В прикреплённом файле - пример макроса для автоматического создания на форме элементов управления.
Благодаря использованию модуля класса, всем создаваемым элементам управления (в данном случае это 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
Вложение |
Размер |
Загрузки |
Последняя загрузка |
CheckBox_Class.xls |
47.5 КБ |
27 |
1 год 4 недели назад |
|