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
发表评论