Im opening a Workbook through Workbook.GetOpenFilename and setting it to Test_wkbk = ActiveWorkbook.Name in a subroutine and I want to make Test_wkbk available globally to the other subroutines in other modules as well. How Do i do that?
Asked
Active
Viewed 57 times
0
-
2Possible duplicate of [Declare a Workbook as a Global variable](https://stackoverflow.com/questions/31536519/declare-a-workbook-as-a-global-variable) – aaa Mar 13 '18 at 08:56
-
I tried that out and every time my workbook is being called it goes through the Get Property function. Since im opening the workbook from GetOpenFilename which asks users to choose a workbook from their Pc, my get property function has the GetOpenFilename and it keeps asking user to choose a workbook every time. – Skyblue Mar 13 '18 at 09:08
-
Poste the code you've tried – Foxfire And Burns And Burns Mar 13 '18 at 11:52
1 Answers
4
Check to see if the private variable has a value. If it does, use it. If it doesn't use 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

Dick Kusleika
- 32,673
- 4
- 52
- 73