Espero 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 arrojará un error, pero no entiendo completamente por qué.
vba
variable-assignment
Jon Artus
fuente
fuente
Respuestas:
set
se usa para asignar una referencia a un objeto. El equivalente en C seríafuente
VBA on the left | C on the right
):Dim A, B As Range | Range A, B;
. Seguir su analogíaA = B | A = B;
sería correcto (y estaría en C), pero enSet A = B | A = &B;
realidad es correcto en VBA (y fallaría en C). ¡En VBA,A = B
ySet A = B
son AMBOS equivalentes a CA = B;
! La distinción ocurre en otro lugar.En su caso, producirá un error. :-)
Set
asigna una referencia de objeto. Para todas las demás asignaciones, laLet
declaración (implícita, opcional y poco utilizada) es correcta:fuente
De MSDN :
fuente
Object variable or With block variable not set
error de VBA :)Set se usa para establecer referencias de objeto, en lugar de asignar un valor.
fuente
Fuera de mi cabeza, Set se usa para asignar objetos COM a variables. Al hacer un Set, sospecho que debajo del capó está haciendo una llamada AddRef () en el objeto para administrar su vida útil.
fuente
Entonces, cuando desea establecer un valor, no necesita "Establecer"; de lo contrario, si se refiere a un objeto, por ejemplo, hoja de trabajo / rango, etc., necesita usar "Establecer".
fuente
Set es una palabra clave y se usa para asignar una referencia a un objeto en VBA.
Por ejemplo, * El siguiente ejemplo muestra cómo usar Set en VBA.
Dim WS como hoja de trabajo
Establecer WS = ActiveWorkbook.Worksheets ("Sheet1")
WS.Name = "Amit"
fuente