在Excel 2003中,如何声明全局变量并仅将其初始化一次,即何时打开工作簿?
我有一些宏使用的参数:输入文件的路径,基本上。目前,我的代码如下所示:
global path1, path2 as string
sub initPaths
path1 = 'path\to\file1'
path2 = 'path\to\file2'
end sub
然后,每当我需要在子程序或函数中使用file1或file2时,我都会调用initPaths
。但这似乎相当不优雅;我希望能够只设置一次路径而不是重复路径。
答案 0 :(得分:13)
从您的示例中看,您想要的是常量,而不是全局变量。
Public Const PATH1 = "path\to\file1"
Public Const PATH2 = "path\to\file2"
如果您确实需要使用代码来确定值,但只想初始化它们一次,则可以使用延迟初始化...
Private mstrPath1 As String
Private mstrPath2 As String
Public Function Path1() As String
if mstrPath1 = vbNullString Then
' Initialize mstrPath1 value here.
End If
Path1 = mstrPath1
End Function
Public Function Path2() As String
if mstrPath2 = vbNullString Then
' Initialize mstrPath2 value here.
End If
Path2 = mstrPath2
End Function
这里的好处是,如果您的代码被重置,下次通过各自的功能访问时,这些值将再次重新初始化。
请注意,应尽可能避免全局变量,并且在可能的情况下,您应该始终优先考虑私有全局变量而不是公共变量。必要时使用全局变量和公共全局变量,但仅在必要时使用。