Contenido
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.
Ejemplo
' 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.