VBA [классы] - как получить доступ к ранее созданному экземпляру класса в другом подпрограмме - PullRequest
3 голосов
/ 14 июля 2011

Я создал экземпляр "Lassie" класса "Dog" в определенной подпрограмме в моей программе.Я также дал ему несколько полезных свойств, таких как Lassie.Age = 7 и Lassie.HeelCapability = False.

Теперь я хотел бы получить доступ к другому подпрограмме и изменить Lassie.HeelCapability наПравда.Как мне определить экземпляр "Lassie" в этом новом сабе, чтобы с ним можно было работать?

Весь код, который я получил, выглядит так:

Dim Lassie As classDog

Set Lassie = New classDog

По существу, чтоЯ ищу способ импортировать существующий экземпляр "Lassie" в другую подпрограмму, без использования ключевого слова "New" и, тем самым, создания нового "Lassie" (без всех ранее указанных свойств).

Сообщения об ошибках, которые я получаю, говорят мне «объект требуется» или «переменная объекта или с переменной блока не установлена».

Конечно, есть способ сделать это.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 14 июля 2011

Вам нужно будет передать 'Lassie' в качестве параметра вашему другому сабвуферу.

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

  OtherSub Lassie
end sub

public sub OtherSub(ByRef dog as classDog) 

end sub

Переменная «dog» в подпрограмме «OtherSub» ссылается на тот же экземпляр объекта, что и переменная «Lassie» из «DeclareSub».

0 голосов
/ 14 июля 2011

Передайте объект в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...