gpt4 book ai didi

excel - VBA thisWorkbook 用法

转载 作者:行者123 更新时间:2023-12-04 21:29:10 38 4
gpt4 key购买 nike

我在“thisWorkbook”中定义了一堆方法,但我无法以 =foo(17.0) 的形式访问它们从电子表格。在互联网上搜索表明,对于您想直接从电子表格中使用的功能,您应该创建一个新的 Module第一的。所以,这是一个两(三?)部分的问题:第一部分是:创建一个新模块与将东西放入 thisWorkbook 有何不同。第二个是:我应该输入什么thisWorkbook ?第三个是:有什么方法可以访问thisWorkbook中的功能吗? (或 Excel UI 中的某些特定工作表模块?

最佳答案

how is creating a new module different from putting things in thisWorkbook?


ThisWorkbook是主文档。它代表 Workbook包含 VBA 项目的对象。喜欢每个 Workbook对象,它响应 Workbook事件。
ThisWorkbook与每个“SheetX”模块一起,是一种特殊的类模块,VBA 将其理解为“文档模块”——这些特殊模块不能添加或删除。宿主应用程序(此处为 Excel)负责: 要添加工作表模块,您必须将工作表添加到工作簿。 VBA 代码不能 New建立一个文档模块;您必须使用库提供的工厂方法来创建它们(即 [ApplicationObject].Workbooks.Open[ApplicationObject].Workbooks.Add[WorkbookObject].Worksheets.Add )。

作为对象,您不能在没有实例的情况下调用它们的公共(public)成员。 ThisWorkbook定义了一个方便命名的对象 ThisWorkbook ,因此您可以通过使用 ThisWorkbook 限定成员调用来调用其成员:
ThisWorkbook.SomePublicProcedure "arg1", arg2, 42

与工作表模块相同,除了这些模块定义了一个以模块的 (Name) 命名的对象。属性 - 默认为 (Name)工作表“Sheet1”的属性是 Sheet1 ,所以你可以像这样限定它:
Sheet1.SomePublicProcedure "arg1", arg2, 42
ThisWorkbook公开公共(public)用户过程,以及从 Workbook 继承的每个成员; Sheet1公开公共(public)用户过程,以及从 Worksheet 继承的每个成员.

what SHOULD I put in thisWorkbook?



属于工作簿级别的任何内容。也就是说,影响主文档的代码。这主要是事件处理程序,例如 Open 的处理程序。事件,在 Excel 中打开工作簿(启用宏)时调用。

您希望在任何文档的代码隐藏中包含尽可能少的代码,因此您的事件处理程序只需调用过程来响应事件:
Private Sub Workbook_Open()
DoSomething
End Sub

在哪里 DoSomething将是 Public Sub在标准模块中。

is there any way to access the functions from thisWorkbook (or some specific sheet module from the Excel UI?



你不想那样做。但是,如果您愿意,可以将宏分配给 Public Sub定义于 ThisWorkbook :

assign macro dialog

请注意,宏是用 ThisWorkbook 限定的。对象名称。

通常,您希望在标准模块中定义宏。标准模块不是对象,不能被实例化。标准模块中的公共(public)过程可以从项目中的任何地方访问,除非它说 Option Private Module在顶部,它的公共(public)成员将随时可供 Excel 使用。

如果您的意思是“可用于 Excel”作为“我可以在公式中使用”,那么您的意思是“作为 UDF 公开”,并且这些与宏一样,属于标准模块,而不是 ThisWorkbook .

关于excel - VBA thisWorkbook 用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58997423/

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