в модуле:
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. Вы должны тщательно продумать, действительно ли это уместно, и если это так, то это способ сделать это. Когда я его использую, я обычно помещаю вышеупомянутый код в модуль самостоятельно (за исключением того, что если я использую более одного Singleton в приложении, я собираю их все вместе в одном модуле). Вы можете добавить подпрограмму уничтожения к тому же модулю и вызвать ее из выхода вашего приложения:
Public Sub CloseSingleton()
Set objSharedClass = Nothing
End Sub
Или вы можете просто позволить ему выйти из области видимости, когда приложение закрывается - не так аккуратно, но я никогда не видел, чтобы это вызывало проблему (хотя я обычно убираю, хотя ...).
EDIT
Использование (на всякий случай, если это не очевидно). Или:
...
Set objLocalCopy = GetShared
DoSomethingWith objLocalCopy.MethodOrProperty
...
Или:
...
DoSomethingWith GetShared.MethodOrProperty
...
Первый вариант предпочтителен, если вы собираетесь использовать общий класс более одного раза в вызывающей подпрограмме, но второй отлично работает для одного вызова.