0

关于如何在 Excel VBA 中使用全局变量,我有几个问题。

所以我的应用程序使用了第三方提供的 API 对象。目前在所有函数中,我们初始化这个对象并使用它:

function()
   Dim api as someApi
   api.dosth

end function

我只是想知道,而不是每次都初始化它,我可以把它变成一个全局变量吗?就像只是在开头声明它并在 workbook_open 函数中初始化它?如果多个函数同时运行,并试图使用这个共享的 api 对象,会不会有问题?还有一个关于全局变量的一般问题:所有模块都共享变量吗?还是每个模块只能看到自己代码中声明的全局变量?例如,如果我在同一个工作簿中有模块 a 和模块 b,并且在模块 a 中声明了 api 对象并在 workbook_open 事件中进行了初始化,那么模块 b 中的函数是否可以使用它?

非常感谢!!

4

1 回答 1

0

根据 API 的使用情况,它可以被初始化一次并在任何地方使用。

我建议阅读全局/公共/私有变量。

本质上,在函数外部将变量声明为 Private 意味着只能在该模块内访问该变量。声明为公共,意味着可以使用该工作簿在所有模块中访问它。声明为全局意味着它可以在该 Excel 实例中的所有工作簿中访问。

如果您只想使用一个工作簿在任何地方访问 API,我建议创建一个公共变量并在工作簿打开时对其进行初始化,确保在工作簿关闭时正确关闭/杀死任何变量。

于 2013-02-03T20:18:10.673 回答