可以在Excel VBA中全局声明工作簿吗?

时间:2018-03-13 08:52:33

标签: excel-vba vba excel

我通过Workbook.GetOpenFilename打开一个工作簿,并在子程序中将其设置为Test_wkbk = ActiveWorkbook.Name,我想让Test_wkbk全局可用于其他模块中的其他子程序。我怎么做?

1 个答案:

答案 0 :(得分:4)

检查私有变量是否有值。如果是,请使用它。如果它不使用GetOpenFileName

Private wLocations As Workbook

Public Property Get Locations() As Workbook

    Dim sFile As String

    If wLocations Is Nothing Then

        sFile = Application.GetOpenFilename("*.xlsx,*.xlsx")

        On Error Resume Next
            Set wLocations = Workbooks(Dir(sFile))
            If wLocations Is Nothing Then
                Set wLocations = Workbooks.Open(sFile)
            End If
        On Error GoTo 0
    End If

    Set Locations = wLocations

End Property