[英]VBA Excel Userform EventHandler for dynamically generated controls not working as expected
我正在使用Excel 2013,設計一個帶有在運行時創建的控件的用戶窗體。 我在制作將在動態創建的控件的change事件上觸發的函數時遇到了麻煩。
控件包含在一個單獨的類模塊中,該模塊創建並管理它們。 我想添加一個在組合框的change事件上觸發的函數,因此我將其聲明為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
所有這些都有效,並且盡管myComboBox
成功更改了ComboBox的顯示方式,但創建了ComboBox並更改了屬性。
因為myComboBox
被聲明為WithEvents
,所以我可以在下拉菜單中找到myComboBox_Change
作為選項並將其放在模塊中:
Private Sub myComboBox_Change()
MsgBox ("Change Event Fired")
End Sub
但是此功能將無法運行,我無法弄清原因。 進行更改時,不會出現消息框,並且此函數中的斷點不會停止任何代碼的運行。 我究竟做錯了什么?
在cyboashu的一些探索性問題的幫助下,我弄清楚了什么地方出了問題。 包含myComboBox
的類不屬於為整個用戶表單的范圍聲明的變量。 函數創建完成后,組件仍位於myFrame
,但是忘記了要在事件上觸發的函數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.