来自类模块的全局variables声明

我有一个工作簿与多个模块和多个潜艇。 虽然有一些variables,但是在大多数的潜艇中,如给定的作业系统一直在使用。

例如

dim cr as worksheet set cr=sheets("combined_report") 

我写这个太多了。 我可以在一个类模块中写一次,并且可以使用任何模块中的任何子语中的“cr”,而不必重新分配它。

是的你可以!

通常,您可以在使用Global关键字声明子/函数之前,在任何模块中定义全局variables,例如

 Option Explicit Global cr as Worksheet Public Sub mySub... 

全局variables将保持它的范围 – 但当然你必须初始化,即分配一个值/对象。

最好的做法是用全局variables前缀g ,例如gWSMain ,所以你总是知道你正在处理一个全局variables。

如果你只想在你的工作簿中使用一个或多个特定工作表的全局variables,那么根本就不需要全局variables! 相反,您可以直接使用它们的代码名称访问它们。 这些通常是Sheet1Sheet2等 – 但您可以在属性窗口中更改名称。

这些工作表在您的应用程序中全局可用,与ThisWorkbook相同。

您可以使用标准模块中的函数执行此操作,并使用Static关键字caching引用:

 Function CR() As Worksheet Static CRSheet As Worksheet If CRSheet Is Nothing Then Set CRSheet = Sheets("combined_report") Set CR = CRSheet End Function