我在想是否可以在Excel VBA中设置母版工作簿并通过所有过程和功能进行访问?
由于我是VBA的新手,所以我不明白VBA使用的语法。
Dim MasterWB as Workbook
Set MasterWB = Workbooks.Open("Path to my Workbook")
但是,如果我想在另一个过程或函数中访问它,则会收到对象定义错误。
我不想在每个Sub或Function中声明对象。 非常感谢!
答案 0 :(得分:1)
有两种方法可以做到这一点:
好的做法:
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
表示您传递了引用,因此其他函数可以修改该原始变量。
第二种方法仅允许您将变量用作参考,因此可能会对其进行更改而不会引起注意。
希望这可以解决您的问题。