如何设置主工作簿对象?

时间:2019-05-27 08:37:42

标签: excel vba

我在想是否可以在Excel VBA中设置母版工作簿并通过所有过程和功能进行访问?

由于我是VBA的新手,所以我不明白VBA使用的语法。

Dim MasterWB as Workbook
Set MasterWB = Workbooks.Open("Path to my Workbook")

但是,如果我想在另一个过程或函数中访问它,则会收到对象定义错误。

我不想在每个Sub或Function中声明对象。 非常感谢!

1 个答案:

答案 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,但是可以使用其他变量,例如IntegerLong用作ByVal,而不是(默认情况下)ByRef

ByVal意味着您仅传递该变量的值,因此不会在函数上对其进行修改。

ByRef表示您传递了引用,因此其他函数可以修改该原始变量。

第二种方法仅允许您将变量用作参考,因此可能会对其进行更改而不会引起注意。

希望这可以解决您的问题。