Я работаю в Excel 2013, создавая Userform с элементами управления, созданными во время выполнения. У меня возникли проблемы с созданием функции, которая будет срабатывать при событии изменения динамически созданных элементов управления.VBA Excel Userform EventHandler для динамически сгенерированных элементов управления не работает должным образом
Элементы управления содержатся в отдельном модуле класса, который создает их и управляет ими. Я хочу, чтобы добавить функцию, что пожары на события изменения в комбо-боксе, поэтому он у меня объявили WithEvents:
Private WithEvents myComboBox As MSForms.ComboBox
... other controls and variable declarations...
У меня есть функция, которая передается кадр, который я хочу элементы управления, чтобы быть в так что я могу создать все компоненты из класса.
Sub initialize(myID As String, myFrame As MSForms.Frame, Left As Double, Top As Double)
...
Set myComboBox = myFrame.Controls.Add("Forms.ComboBox.1", myID & "_comboBox")
...
End Sub
Это все работает, и ComboBox создается и свойства изменились, хотя myComboBox
успешно изменить, как появляется ComboBox.
Поскольку myComboBox
объявлен WithEvents
, я могу найти myComboBox_Change
как вариант в раскрывающемся меню и поставить его в модуле:
Private Sub myComboBox_Change()
MsgBox ("Change Event Fired")
End Sub
Но эта функция не будет работать, и я не могу понять почему. При изменении не появится сообщение, а точка останова, включенная в эту функцию, не остановит запуск какого-либо кода. Что я делаю не так?
Я не могу проверить это сам и не обязательно правильно запомнить, но ... попробуйте «Public WithEvents myComboBox As MSForms .ComboBox "вместо" Private ... " – user3598756
Спасибо за предложение, но это не повлияло. – SudoNim
У вас есть больше * чем один *? Какова цель динамического присвоения имени как «myID &» _comboBox »? – Comintern