¿Qué hace realmente la palabra clave Set en VBA? [duplicar]
Con suerte, será una pregunta fácil, ¡pero me gustaría una respuesta técnica!
Cuál es la diferencia entre:
i = 4
y
Set i = 4
en VBA? Sé que esto último arrojará un error, pero no entiendo del todo por qué.
set
Se utiliza para asignar una referencia a un objeto. El equivalente C sería
int i;
int* ref_i;
i = 4; // Assigning a value (in VBA: i = 4)
ref_i = &i; //assigning a reference (in VBA: set ref_i = i)
En su caso, producirá un error. :-)
Set
asigna una referencia de objeto. Para todas las demás asignaciones, la afirmación (implícita, opcional y poco utilizada) Let
es correcta:
Set object = New SomeObject
Set object = FunctionReturningAnObjectRef(SomeArgument)
Let i = 0
Let i = FunctionReturningAValue(SomeArgument)
' or, more commonly '
i = 0
i = FunctionReturningAValue(SomeArgument)
De MSDN :
Establecer palabra clave: en VBA, la palabra clave Establecer es necesaria para distinguir entre la asignación de un objeto y la asignación de la propiedad predeterminada del objeto. Dado que las propiedades predeterminadas no son compatibles con Visual Basic .NET, la palabra clave Set no es necesaria y ya no se admite.
Set se utiliza para establecer referencias de objetos, en lugar de asignar un valor.