В модуле:
Private objSharedClass As myClass
Public Function GetShared() As myClass
If objSharedClass Is Nothing Then
Set objSharedClass = New myClass
End If
Set GetShared = objSharedClass
End Function
Это реализация VB (A) шаблона Singleton. Вам нужно тщательно подумать, действительно ли это подходит, и если да, то это способ сделать это. Когда я его использую, я обычно помещаю вышеуказанный код в модуль самостоятельно (за исключением того, что если я использую более одного синглтона в приложении, я помещаю их все вместе в один модуль). Вы можете добавить процедуру уничтожения в том же модуле, и вызывать его из Вашего выхода приложения:
Public Sub CloseSingleton()
Set objSharedClass = Nothing
End Sub
Или вы можете просто позволить ей выйти за рамки, когда приложение закрывается - не так аккуратно, но я никогда видел, что это вызывает проблему (обычно я убираю, хотя ...).
EDIT
Использование (только в случае, если это не очевидно). Либо:
...
Set objLocalCopy = GetShared
DoSomethingWith objLocalCopy.MethodOrProperty
...
Или:
...
DoSomethingWith GetShared.MethodOrProperty
...
Первый предпочтительнее, если вы собираетесь использовать общий класс больше, чем один раз в вызывающей процедуре, но вторая отлично работает для одного вызова.
++ и да, это так просто :) – 2014-10-22 10:54:23