VBA [classes] - 如何在另一个sub中访问以前实例化的类实例

时间:2011-07-14 16:58:37

标签: oop vba

我在程序中的特定子项中创建了“Dog”类的实例“Lassie”。我也给它一些有用的属性,比如Lassie.Age = 7和Lassie.HeelCapability = False。

现在我想访问另一个子并将Lassie.HeelCapability更改为True。 我如何在这个新子中定义实例“Lassie”,以便可以使用它?

我遇到的所有代码都是这样的:

Dim Lassie As classDog

Set Lassie = New classDog

基本上我正在寻找的是一种将现有实例“Lassie”导入另一个子的方法,而不使用关键字“New”,从而创建一个新的“Lassie”(没有先前给出的所有属性)。

我收到的错误消息告诉我“需要对象”或“对象变量或未设置块变量”。

当然有办法做到这一点。

提前致谢。

2 个答案:

答案 0 :(得分:2)

您需要将'Lassie'作为参数传递给您的其他子。

public sub DeclareSub()
  Dim Lassie as classDog
  Lassie = new classDog

  OtherSub Lassie
end sub

public sub OtherSub(ByRef dog as classDog) 

end sub

子程序'OtherSub'中的变量'dog'指的是与'DeclareSub'中的变量'Lassie'相同的对象实例。

答案 1 :(得分:0)

ByRef中的对象传递给新的子程序。

Sub ChangeHeel(ByRef olassie As classDog)
    'change the object here, and it will be changed in the calling sub
    olassie.HeelCapability = True
End Sub