使用用户选择的工作簿的模块变量

时间:2017-06-07 16:45:57

标签: excel vba excel-vba

之前并没有真正有机会使用模块变量,不幸的是,即使在阅读了它们之后,我似乎也无法使其工作。

我的问题是我正在尝试使用指定为工作簿的变量,用户浏览并在不同的子目录中使用它。

作为我的意思的示例代码:

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

1 个答案:

答案 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是字符串而不是对象)