Использование классов для элементов управления на форме

Скриншот формы VBA с программно созданными элементами управления

В прикреплённом файле - пример макроса для автоматического создания на форме элементов управления.

Благодаря использованию модуля класса, всем создаваемым элементам управления (в данном случае это 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 ? Делаю по аналогии, но ничего не выходит.

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
         _____  __        __  ____           __        __
___ |___ / \ \ / / | _ \ __ _ \ \ / /
/ _ \ |_ \ \ \ /\ / / | |_) | / _` | \ \ /\ / /
| __/ ___) | \ V V / | _ < | (_| | \ V V /
\___| |____/ \_/\_/ |_| \_\ \__,_| \_/\_/
Введите код, изображенный в стиле ASCII-арт.

Не получается применить макрос? Не удаётся изменить код под свои нужды?

Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.