en un módulo:
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
Es la aplicación VB (A) del patrón Singleton. Debe considerar cuidadosamente si es realmente apropiado o no, y si es así, esa es la manera de hacerlo. Cuando lo uso, generalmente pongo el código anterior en un Módulo por sí mismo (excepto que si estoy usando más de un Singleton en la aplicación, los pongo todos juntos en un solo Módulo). Puede agregar una rutina de destrucción al mismo módulo y lo llaman desde su salida de la aplicación:
Public Sub CloseSingleton()
Set objSharedClass = Nothing
End Sub
O puede simplemente dejar que se vaya fuera de alcance cuando la aplicación se cierra - no tan ordenado, pero nunca he visto que causa un problema (normalmente limpio, aunque ...).
EDITAR
uso (por si acaso no es obvio). O bien:
...
Set objLocalCopy = GetShared
DoSomethingWith objLocalCopy.MethodOrProperty
...
O:
...
DoSomethingWith GetShared.MethodOrProperty
...
La primera es preferible si usted va a utilizar la clase compartido más de una vez en la rutina de llamada, pero el segundo funciona bien para una sola llamada.
++ y sí, es así de simple :) –