va调用类模块方法无法使用类模块中定义的with events对象
时间: 2023-08-04 18:06:38 浏览: 44
在VBA中,如果你想要在类模块中使用事件,你需要将相关对象声明为`WithEvents`,例如:
```
Private WithEvents MyButton As MSForms.CommandButton
```
然后你可以编写事件处理程序来响应该对象的事件,例如:
```
Private Sub MyButton_Click()
MsgBox "Button clicked!"
End Sub
```
如果你想要从类模块外部的代码中调用该类模块中的方法,并且该方法需要使用该对象并触发其事件,你需要将该对象声明为`Public`,并且你需要在类模块外部声明该类的实例,例如:
```
Public MyInstance As MyClass
Sub Test()
Set MyInstance = New MyClass
Set MyInstance.MyButton = UserForm1.CommandButton1
MyInstance.MyMethod
End Sub
```
在上述示例代码中,我们首先在类模块中声明了一个带有事件的对象`MyButton`,然后我们在类模块外部声明了该类的实例`MyInstance`,并将`MyButton`对象设置为`UserForm1.CommandButton1`,最后调用了类模块中的方法`MyMethod`。
需要注意的是,如果你想要在类模块外部的代码中触发该对象的事件,你需要确保该对象已经被设置,并且你需要在该对象上手动触发该事件,例如:
```
MyInstance.MyButton_Click
```
如果你不手动触发该事件,该事件将不会被触发。