excel - excel vba全局变量和并发

  显示原文与译文双语对照的内容

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

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


function()


 Dim api as someApi


 api.dosth



end function



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

非常感谢 !

时间: 原作者:

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

我建议在 global/public/private 变量上阅读。

在函数之外将变量声明为 private 实际上意味着只能在该模块中访问变量。 声明为 public,意味着可以通过工作簿在所有模块中访问它。 声明为全局表示它可以跨该Excel实例中的所有工作簿进行访问。

,我建议在工作簿中创建一个 public 变量,并在工作簿打开时使用 initialising,确保工作簿关闭时正确关闭/终止任何变量。

...