之前并没有真正有机会使用模块变量,不幸的是,即使在阅读了它们之后,我似乎也无法使其工作。
我的问题是我正在尝试使用指定为工作簿的变量,用户浏览并在不同的子目录中使用它。
作为我的意思的示例代码:
Sub GetFile()
Dim fNameAndPath As Variant
fNameAndPath = Application.GetOpenFilename(FileFilter:="Excel Files (*.XLS), *.XLS", Title:="Select File To Be Opened")
If fNameAndPath = False Then Exit Sub
Call one
Call two
End Sub
Sub one()
With fNameAndPath
'do stuff
End With
End Sub
Sub two()
With fNameAndPath
'do stuff
End With
End Sub
答案 0 :(得分:2)
最佳做法是将变量的范围(其可见)限制在尽可能小的区域 - 在这种情况下,将变量作为参数发送,这样变量只存在于声明或使用它的子中。
If fNameAndPath = False Then Exit Sub
one fNameAndPath
two fNameAndPath
End Sub
接收它们:
Sub one(fNameAndPath as Variant)
///
Sub two(fNameAndPath as Variant)
///
(With fNameAndPath
无效,因为fNameAndPath
是字符串而不是对象)