Есть два способа сделать это:
Хорошая практика:
Option Explicit
Sub Test()
Dim MasterWB As Workbook
Set MasterWB = Workbooks.Open("Path")
UseWb MasterWB
End Sub
Sub UseWb(wb As Workbook)
wb.Close
End Sub
Вы не должны использовать практику:
Option Explicit
Public MasterWB As Workbook
Sub Test()
Set MasterWB = Workbooks.Open("Path")
UseWb MasterWB
End Sub
Sub UseWb()
wb.Close
End Sub
Первыйпозволяет передавать Workbook Variable
в качестве параметра другим функциям, в этом случае вы не можете использовать ByVal
, но другие переменные, такие как Integer
или Long
, могут использоваться как ByVal
вместо (по умолчанию) ByRef
.
ByVal
означает, что вы передаете только значение этой переменной, поэтому вы не будете изменять его в функции.
ByRef
означает, что вы передадите ссылку, поэтому другая функцияможет изменить эту исходную переменную.
Второй способ позволяет использовать переменную только в качестве ссылки, поэтому могут быть изменения в ней без предварительного уведомления.
Надеюсь, это немного прояснит ваш вопрос.