Tengo una variable global que es una instancia de mi clase personalizada.
¿Cómo verifico si el objeto está configurado o si necesito inicializarlo?
Tengo una variable global que es una instancia de mi clase personalizada.
¿Cómo verifico si el objeto está configurado o si necesito inicializarlo?
Respuestas:
If obj Is Nothing Then
' need to initialize obj: '
Set obj = ...
Else
' obj already set / initialized. '
End If
O, si lo prefiere al revés:
If Not obj Is Nothing Then
' obj already set / initialized. '
Else
' need to initialize obj: '
Set obj = ...
End If
obj Is Nothing
NO es lo mismo que comprobar IsNothing(obj)
. Gracias por la sintaxis correcta para verificar esto ... no estoy seguro de por qué se IsNothing()
comporta de manera diferente ...
Not (obj Is Nothing)
más fácil de entender que Not obj Is Nothing
. ¡Mi cerebro no sabe qué es un "No obj"!
La forma (no) segura de hacer esto, si está de acuerdo con no usar la opción explícita, es ...
Not TypeName(myObj) = "Empty"
Esto también maneja el caso si el objeto no ha sido declarado. Esto es útil si solo desea comentar una declaración para desactivar algún comportamiento ...
Dim myObj as Object
Not TypeName(myObj) = "Empty" '/ true, the object exists - TypeName is Object
'Dim myObj as Object
Not TypeName(myObj) = "Empty" '/ false, the object has not been declared
Esto funciona porque VBA creará automáticamente una instancia de una variable no declarada como un tipo de variante vacía. Elimina la necesidad de un booleano auxiliar para gestionar el comportamiento.
Option Explicit
. No gana nada excepto problemas. Para "cambiar" el comportamiento, utilice la compilación condicional.