我想在Excel VBA中創建一個自定義類來爲OLEObject(工作表上的ActiveX控件)處理事件GotFocus和LostFocus。在Excel VBA中使用自定義類訪問OLEObject事件
定製類clsSheetControl
Dim WithEvents objOLEControl as OLEObject
Public Sub Init(oleControl as OLEObject)
Set objOLEControl = oleControl
End Sub
高端定製類
調用表
Public Sub SetControlHandler()
set clsControl = new ClsSheetControl
clsControl.Init(Me.OLEObjects("cmdControl1")
End Sub
末表
當我在下拉列表中選擇的objOLEControl,我能然而,自定義類模塊中創建「的GotFocus」和「引發LostFocus」,當行
Set objOLEControl = oleControl
在自定義類中遇到,我得到的錯誤「459:對象或類不支持這組事件」。
我試過尋找答案,但大多數結果處理訪問OLEObject中的實際控制對象,但這不是我在這裏要做的。
任何人都可以幫忙嗎?
編輯
這不工作表上的工作,要麼
工作表
Dim WithEvents objCtrl As OLEObject
Dim WithEvents chkCtrl As MSForms.CheckBox
Private Sub Worksheet_Activate()
Set chkCtrl = Me.OLEObjects("chkControl").Object
Set objCtrl = Me.OLEObjects("chkControl")
End Sub
Private Sub chkControl_GotFocus()
MsgBox ("chkControl has focus")
End Sub
線
Set objCtrl = Me.OLEObjects("chkControl")
提出了一個相同的ER ROR。但直接訪問GotFocus事件(chkControl_GotFocus事件)沒有問題。
我明顯做錯了什麼,但我找不到任何文檔在互聯網上解釋什麼!
另外需要注意的是,I **可以**在**工作表**代碼中訪問OLEObject的GetFocus事件。 – Bobsickle