簡體   English   中英

VBA Excel用戶窗體EventHandler,用於動態生成的控件無法按預期工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM