WithEvents 是用于在定义变量时添加表示该变量是将要响应事件的变量,它只能用于类模块中。
vba中有很多对象是可以响应事件,在添加WithEvents定义变量的同时就可以看到哪些对象是可以响应事件的。
如下图所示

由于定义的对象变量,在没有赋值之前没有匹配任何一个对象实例。所以要让带有事件的对象生效还要将对象赋值给具体的对象实例。
如下代码所示,首先执行xyf子过程,将obj对象赋值为当前的excel应用程序,然后它就可以响应Application对象的所有事件了。在这里,给Application对象的NewWorkbook事件添加了代码,然后新建工作簿时将触发事件。
Public WithEvents obj As Application
Private Sub obj_NewWorkbook(ByVal Wb As Workbook)
MsgBox Wb.Name
End Sub
Sub xyf()
Set obj = Excel.Application
End Sub


发表评论