Excel 运行时错误';459';:对象或类不支持事件集
我创建了一个名为Class1的简单类,正在测试事件是否可用于WithEvents列出的对象或容器 Class1:Excel 运行时错误';459';:对象或类不支持事件集,excel,vba,class,runtime-error,activex,Excel,Vba,Class,Runtime Error,Activex,我创建了一个名为Class1的简单类,正在测试事件是否可用于WithEvents列出的对象或容器 Class1: Option Explicit Public WithEvents Obj As OLEObject Private Sub Obj_GotFocus() MsgBox "Got U" End Sub Private Sub Obj_LostFocus() MsgBox "Lost U" End Sub Option Explicit Dim clsObj
Option Explicit
Public WithEvents Obj As OLEObject
Private Sub Obj_GotFocus()
MsgBox "Got U"
End Sub
Private Sub Obj_LostFocus()
MsgBox "Lost U"
End Sub
Option Explicit
Dim clsObj As Class1
Sub doit()
Set clsObj = New Class1
Set clsObj.Obj = Sheet1.OLEObjects(1) ' Getting error 459 on this line
End Sub
据我所知,OleObject是一个容器,因此它有上面列出的两个事件
在模块1中,这是一个简单的代码,用于在我的工作簿的表1上设置单个对象。出于测试目的,我添加了5个不同的ActiveX控件,以查看哪个控件可以获取事件
模块1:
Option Explicit
Public WithEvents Obj As OLEObject
Private Sub Obj_GotFocus()
MsgBox "Got U"
End Sub
Private Sub Obj_LostFocus()
MsgBox "Lost U"
End Sub
Option Explicit
Dim clsObj As Class1
Sub doit()
Set clsObj = New Class1
Set clsObj.Obj = Sheet1.OLEObjects(1) ' Getting error 459 on this line
End Sub
上面的以下行导致错误:
运行时错误“459”:
对象或类不支持事件集
注意:
Option Explicit
Public WithEvents Obj As OLEObject
Private Sub Obj_GotFocus()
MsgBox "Got U"
End Sub
Private Sub Obj_LostFocus()
MsgBox "Lost U"
End Sub
Option Explicit
Dim clsObj As Class1
Sub doit()
Set clsObj = New Class1
Set clsObj.Obj = Sheet1.OLEObjects(1) ' Getting error 459 on this line
End Sub
我可以将WithEvents添加到此容器中的对象,例如。
一个标签1并让它工作,但它给出了一组不同的
事件,而不是Get_Focus()和Lost_Focus()事件。但是,这不是我想要的:
Class1:
Option Explicit
Public WithEvents Obj As OLEObject
Private Sub Obj_GotFocus()
MsgBox "Got U"
End Sub
Private Sub Obj_LostFocus()
MsgBox "Lost U"
End Sub
Option Explicit
Dim clsObj As Class1
Sub doit()
Set clsObj = New Class1
Set clsObj.Obj = Sheet1.OLEObjects(1) ' Getting error 459 on this line
End Sub
模块1:
Option Explicit
Public WithEvents Obj As OLEObject
Private Sub Obj_GotFocus()
MsgBox "Got U"
End Sub
Private Sub Obj_LostFocus()
MsgBox "Lost U"
End Sub
Option Explicit
Dim clsObj As Class1
Sub doit()
Set clsObj = New Class1
Set clsObj.Obj = Sheet1.OLEObjects(1) ' Getting error 459 on this line
End Sub
问题:
Option Explicit
Public WithEvents Obj As OLEObject
Private Sub Obj_GotFocus()
MsgBox "Got U"
End Sub
Private Sub Obj_LostFocus()
MsgBox "Lost U"
End Sub
Option Explicit
Dim clsObj As Class1
Sub doit()
Set clsObj = New Class1
Set clsObj.Obj = Sheet1.OLEObjects(1) ' Getting error 459 on this line
End Sub
4:将对象添加到工作表,在VBA项目资源管理器中转到工作表,在“代码”窗口上方的左下拉列表中可以选择OLE对象,在右下拉列表中可以选择已添加的事件。看到我得到的错误了吗。我希望你能阅读我的全部帖子请尝试使用Sheet1.OLEObjects(1)。Object@hansPrashant,您正在将一个对象设置为容器,即Oleobject。这样不行。