如何在vba中使用WithEvents关键字?

WithEvents 是用于在定义变量时添加表示该变量是将要响应事件的变量,它只能用于类模块中。

vba中有很多对象是可以响应事件,在添加WithEvents定义变量的同时就可以看到哪些对象是可以响应事件的。

如下图所示

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
       

发表评论