variable - ¿Qué hace realmente la palabra clave Set en VBA?
lista de objetos vba excel (7)
Esperemos que sea una pregunta fácil, pero me gustaría una respuesta técnica a esto.
Cuál es la diferencia entre:
i = 4
y
Set i = 4
en VBA? Sé que este último lanzará un error, pero no entiendo completamente por qué.
Desde 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 Establecer no es necesaria y ya no es compatible.
El conjunto se usa para configurar referencias de objetos, en lugar de asignar un valor.
En tu caso, producirá un error. :-)
Set
asigna una referencia de objeto. Para todas las demás asignaciones, la instrucción de Let
(implícita, opcional y poco utilizada) 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)
Entonces, cuando quiera establecer un valor, no necesita "Establecer"; de lo contrario, si se está refiriendo a un objeto, por ejemplo, hoja de trabajo / rango, etc., necesita usar "Establecer".
Fuera de mi cabeza, Set se utiliza para asignar objetos COM a las variables. Al hacer un Set, sospecho que bajo el capó está haciendo una llamada AddRef () al objeto para administrar su vida.
Set es una palabra clave y se usa para asignar una referencia a un objeto en VBA.
Por ejemplo, * El ejemplo siguiente muestra cómo usar Set en VBA.
Dim WS WS Worksheet
Establecer WS = ActiveWorkbook.Worksheets ("Sheet1")
WS.Name = "Amit"
set
se usa para asignar una referencia a un objeto. El equivalente en 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)