Crear variables de objeto

Microsoft VBA

Crear variables de objeto

   

Se puede crear una variable de objeto de la misma forma que el objeto al que hace referencia. Se pueden activar o devolver las propiedades del objeto o utilizar cualquiera de sus métodos.

Para crear una variable de objeto:

  1. Declare la variable de objeto.

  2. Asigne la variable de objeto a un objeto.

Declarar variables de objeto

Para declarar una variable de objeto se ha de usar la instrucción Dim o una de las restantes instrucciones de declaración (Public, Private, o Static). Una variable que se refiere a un objeto debe ser una Variant, un Object, o un tipo específico de objeto. Por ejemplo, son válidas las siguientes declaraciones:

' Declara MiObjeto como tipo de datos Variant.
Dim MiObjeto
' Declara MiObjeto como un tipo de datos Object.
Dim MiObjeto As Object
' Declara MiObjeto como un tipo Font.
Dim MiObjeto As Font

Nota    Si utiliza una variable de objeto sin haberla declarado previamente, el tipo de datos predefinido de la variable de objeto es Variant.

Se puede declarar una variable de objeto con el tipo de datos Object cuando el tipo de objeto específico no se conoce hasta que se ejecuta el procedimiento. Utilice el tipo de datos Object para crear una referencia genérica a cualquier objeto.

Si conoce el tipo específico de objeto, debe declarar así la variable de objeto. Por ejemplo, si la aplicación contiene un tipo de objeto Ejemplo, se puede declarar una variable de objeto para ese objeto empleando una cualquiera de las dos instrucciones siguientes:

Dim MiObjeto As Object    ' Se declara como objeto genérico.
Dim MiObjeto As Ejemplo    ' Se declara sólo como un objeto Ejemplo.

Al declarar objetos específicos es posible comprobar automáticamente los tipos, el código es más rápido de ejecución y mejora su legibilidad.

Asignar una variable de objeto a un objeto

Para asignar una variable de objeto a un objeto se utiliza la instrucción Set. Es posible asignar una expresión de objeto o Nothing. Por ejemplo, son válidas las siguientes asignaciones a una variable de objeto:

Set MiObjeto = SuObjeto    ' Asigna referencia a objeto.
Set MiObjeto = Nothing    ' Deshace la relación.

Se puede efectuar al mismo tiempo la declaración de la variable de objeto con la asignación de un objeto a la misma, para ello se utiliza la palabra clave New en la instrucción Set. Por ejemplo:

Set MiObjeto = Nuevo Objeto    ' Crea y asigna

Al asignar a una variable de objeto el valor Nothing se deshace la relación que pudiera existir entre la variable de objeto y cualquier objeto específico. Así se evita que, accidentalmente, se pueda cambiar el objeto al cambiar la variable. Una variable de objeto queda definida siempre como Nothing al cerrar el objeto asociado, así es posible comprobar si la variable de objeto está asociada a un objeto válido. Por ejemplo:

If Not MiObjeto Is Nothing Then
    ' La variable hace referencia a un objeto válido.
    . . .
End If

Por supuesto, esta prueba nunca podrá determinar con absoluta certeza si un usuario ha cerrado o no la aplicación que contiene al objeto al que se hace referencia por la variable de objeto.

Hacer referencia a la definición actual de un objeto

Utilice la palabra clave Me para hacer referencia a la definición actual del objeto donde se está ejecutando el código. Todos los procedimientos asociados con el objeto actual tienen acceso al objeto al que se hace referencia como Me. La utilización de Me es especialmente útil para pasar información sobre la definición actual de un objeto a un procedimiento de otro módulo. Por ejemplo, suponga que existe el siguiente procedimiento en un módulo:

Sub CambiaColorObjeto(MiObjetoNombre As Object)
    MiObjetoNombre.ColorFondo = RGB(Rnd * 256, Rnd * 256, Rnd * 256)
End Sub

Se puede hacer una llamada al procedimiento y pasarle, como argumento, la definición actual del objeto empleando la siguiente instrucción:

CambiaColorObjeto Me