¿Cómo usar la instrucción Property Set en VBA?

La instrucción `Property Set` en VBA (Visual Basic for Applications) se utiliza para definir una propiedad que asignará un objeto a una variable privada dentro de una clase. Esto significa que, en lugar de trabajar con un valor simple como un número o una cadena de texto, `Property Set` se utiliza para manejar y asignar referencias a objetos.

Aquí hay un ejemplo básico de cómo se usa `Property Set`:

' Definición de una clase llamada MiClase
Class MiClase
    Private pMiObjeto As Object ' Variable privada para almacenar el objeto

    ' Definir una propiedad pública para asignar pMiObjeto
    Public Property Set MiObjeto(value As Object)
        Set pMiObjeto = value
    End Property
    
    ' Definir otra propiedad pública para recuperar pMiObjeto
    Public Property Get MiObjeto() As Object
        Set MiObjeto = pMiObjeto
    End Property
End Class

En el ejemplo anterior, `MiClase` tiene una propiedad llamada `MiObjeto`. Hay dos partes en la definición de la propiedad: `Property Set` para asignar un objeto nuevo a la variable privada `pMiObjeto`, y `Property Get` para recuperar el objeto actualmente asignado.

Aquí se muestra cómo utilizar la clase y la propiedad definida:

' Crear un nuevo objeto de MiClase
Dim m As New MiClase
Dim o As Object

' Crear un nuevo objeto para asignar
Set o = New Collection ' Utilizando Collection como ejemplo, podría ser cualquier tipo de objeto

' Utilizar Property Set para asignar o a MiObjeto
Set m.MiObjeto = o

' Y luego podemos recuperar la propiedad con Property Get
Dim newObj As Object
Set newObj = m.MiObjeto

Cuando trabajamos con objetos y asignamos uno a otro utilizando `Set`, estamos trabajando con referencias a esos objetos en lugar de con sus valores. De ahí que cuando deseemos cambiar la referencia a un nuevo objeto, debemos utilizar `Property Set`.

Recuerda que a `Property Set` siempre se le debe pasar un argumento tipo `Object` o una clase específica. Si intentas pasar un valor primitivo como `String` o `Integer`, recibirás un error. Para valores no-objeto, deberás usar `Property Let` en lugar de `Property Set`.

Conoce nuestra tienda

Ver más productos

Mejora tu nivel y logra tus objetivo

Excel

Excel cursos

Access

cursos de Access

Power BI

cursos power BI

Ayúdanos a hacer crecer el proyecto

Deja un comentario