¿Qué hace realmente la palabra clave Set en VBA? [duplicar]

Resuelto Jon Artus asked hace 15 años • 7 respuestas

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é.

Jon Artus avatar Dec 08 '08 20:12 Jon Artus
Aceptado

setSe 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)
Treb avatar Dec 08 '2008 14:12 Treb

En su caso, producirá un error. :-)

Setasigna una referencia de objeto. Para todas las demás asignaciones, la afirmación (implícita, opcional y poco utilizada) Letes correcta:

Set object = New SomeObject
Set object = FunctionReturningAnObjectRef(SomeArgument)

Let i = 0
Let i = FunctionReturningAValue(SomeArgument)

' or, more commonly '

i = 0
i = FunctionReturningAValue(SomeArgument)
Tomalak avatar Dec 08 '2008 13:12 Tomalak

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.

Galwegian avatar Dec 08 '2008 13:12 Galwegian

Set se utiliza para establecer referencias de objetos, en lugar de asignar un valor.

LeppyR64 avatar Dec 08 '2008 13:12 LeppyR64