Всем привет,
Пытаюсь сделать универсальный обработчик событий (Change) для определенных контролов (комбобокс и текстбокс) на форме, по аналогии с рабочим кодом (закомментирован) обработчика для одного контрола, но возникает ошибка.

Подскажите, пожалуйста, как лучше это реализовать в одном классе это, не плодить же по классу на каждый тип контрола.
класс clsEventHandler_Universal
юзер форма
Пытаюсь сделать универсальный обработчик событий (Change) для определенных контролов (комбобокс и текстбокс) на форме, по аналогии с рабочим кодом (закомментирован) обработчика для одного контрола, но возникает ошибка.
Подскажите, пожалуйста, как лучше это реализовать в одном классе это, не плодить же по классу на каждый тип контрола.
класс clsEventHandler_Universal
| Код |
|---|
Option Explicit Private WithEvents mControl As MSForms.Control '<-- тут ошибка возникает Public Sub AssignControl(c As MSForms.Control) Set mControl = c End Sub Private Sub mControl_Change() Debug.Print TypeName(mControl) Select Case True Case TypeName(mControl) = "TextBox" Debug.Print "txt", mControl.Name Case TypeName(mControl) = "ComboBox" Debug.Print "cbo", mControl.Name End Select End Sub |
| Код |
|---|
Private eventHandlerCollection As New Collection Private Sub UserForm_Initialize() Dim c As Control Dim handler As clsEventHandler_Universal For Each c In Controls If TypeName(c) = "ComboBox" Or _ TypeName(c) = "TextBox" Then Set handler = New clsEventHandler_Universal handler.AssignControl c eventHandlerCollection.Add handler End If Next End Sub |
Изменено: - 24.08.2022 09:53:02