【问题标题】:Can a workbook be declared globally in Excel VBA?可以在 Excel VBA 中全局声明工作簿吗?
【发布时间】:2018-08-21 10:52:11
【问题描述】:

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

【问题讨论】:

  • 我试过了,每次调用我的工作簿时,它都会通过 Get Property 函数。由于我从 GetOpenFilename 打开工作簿,要求用户从他们的 PC 中选择一个工作簿,因此我的 get 属性函数具有 GetOpenFilename 并且它每次都要求用户选择一个工作簿。
  • 贴出你试过的代码

标签: excel vba


【解决方案1】:

检查私有变量是否有值。如果是,请使用它。如果不使用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

【讨论】:

    猜你喜欢
    • 2015-02-19
    • 2015-10-10
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    相关资源
    最近更新 更多