gpt4 book ai didi

excel - 在 Excel 加载项中包含 "ThisWorkbook"代码

转载 作者:行者123 更新时间:2023-12-02 11:15:20 26 4
gpt4 key购买 nike

我正在创建一个 VBA Excel-Add in。我需要使用“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

现在,在代码 Pane (Ctrl+F2) 的左上角下拉菜单中,您可以看到 mxlApp。选择该选项并切换到右上角的下拉菜单,然后选择 SheetChange。您将得到这样的 stub 。

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 的标准模块中的任何子程序都将运行。

关于excel - 在 Excel 加载项中包含 "ThisWorkbook"代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24683155/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com