我正在重构一个包含多个模块的Excel电子表格。在ThisWorkbook对象中,可以找到以下代码:
Option Explicit
set ws = ActiveSheet
在执行代码的过程中,线程进入其中一个模块。在这个模块中,我们可以找到对象声明:
Global ws as Worksheet
我知道全局变量可以在所有模块中使用。这是否意味着函数声明发生在函数定义之后?还是在运行任何代码之前,应用程序中所有模块中的所有全局变量都已声明?
声明不是可执行代码,无论它们是全局的、模块的还是本地范围的(Dim
语句不可执行;Dim...As New
也不可执行(。所以,是的,它们被宣布为"立即"。如果加载了模块(即,如果它的任何成员在代码入口点的任何执行路径中使用(,那么它定义的所有内容都会被定义。
注意,Global
关键字是过时/无用的:Global
变量与任何其他Public
变量都没有任何不同。
正如@BigBen在评论中提到的,全局作用域ws As Worksheet
对象看起来非常非常像您想要在重构项目中消除的全局状态变量类型。