我正在创建VBA Excel-Add。我需要使用“ Workbook_SheetChange”子项。是否可以将此代码作为外接程序的一部分包含在内,以便所有使用包含用户定义功能的外接程序的工作簿都可以访问在工作表更改时执行的代码?
该文件将另存为.xla加载项。但是,“ Workbook_SheetChange”将无法在模块中使用,并且必须位于文件的ThisWorkbook代码部分中。因此,当前没有使用我的外接程序进行继承。
您的加载项中需要一个自定义类模块,该模块具有一个声明为WithEvents的Application变量。我通常将我的类模块称为CAppEvents。
Private WithEvents mxlApp As Application
Public Property Set App(xlApp As Application)
Set mxlApp = xlApp
End Property
现在,在代码窗格(Ctrl + F2)的左上角下拉菜单中,您有了mxlApp。选择该选项卡,然后在右上角选项卡上选择TabChange。您将得到一个这样的存根。
Private Sub mxlApp_SheetChange(ByVal Sh As Object, ByVal Target As Range)
End Sub
如果任何打开的工作簿中任何工作表上的任何单元格发生更改,则将触发此事件。您将需要添加一些代码以确保它是您关心的工作表。您没有在参数中获得工作簿名称,但是可以使用它Sh.Parent
来访问工作簿。
您唯一需要做的另一件事就是创建类。在标准模块中
Public gclsAppEvents As CAppEvents
Sub Auto_Open()
Set gclsAppEvents = New CAppEvents
Set gclsAppEvents.App = Application
End Sub
将变量设为public可以在加载外接程序时将其保留在范围内。首次打开工作簿时,名为Auto_Open的标准模块中的任何子程序都将运行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句