在Excel加载项中包含“ThisWorkbook”代码

我正在创build一个VBA的Excel添加。我需要使用“Workbook_SheetChange”子。 是否有可能将此代码作为加载项的一部分包含在内,以便使用包含用户定义函数的加载项的所有工作簿都可以访问在工作表上执行的代码?

该文件正在保存为.xla加载项。 但是,“Workbook_SheetChange”不能在模块中工作,并且必须位于文件的ThisWorkbook代码部分。 因此目前我的加载项并没有被inheritance。

您的加载项中需要一个自定义类模块,该模块具有一个声明为WithEvents的应用程序variables。 我通常会调用我的类模块CAppEvents。

Private WithEvents mxlApp As Application Public Property Set App(xlApp As Application) Set mxlApp = xlApp End Property 

现在在代码窗格的左上angular下拉(Ctrl + F2),你有mxlApp。 select该标签并将其拖到右上方,然后selectSheetChange。 你会得到这样的存根(stub)。

 Private Sub mxlApp_SheetChange(ByVal Sh As Object, ByVal Target As Range) End Sub 

如果任何打开的工作簿中的任何工作表上的单元格发生更改,则此事件将触发。 您需要添加一些代码,以确保它是您关心的工作表。 您没有在参数中获取工作簿名称,但可以使用Sh.Parent来访问工作簿。

你唯一需要的是创build这个类。 在一个标准模块中

 Public gclsAppEvents As CAppEvents Sub Auto_Open() Set gclsAppEvents = New CAppEvents Set gclsAppEvents.App = Application End Sub 

在加载加载项时,使variables公开使其保持在范围内。 标准模块名为Auto_Open中的任何子将在首次打开工作簿时运行。