Cosa fa in realtà la parola chiave Set in VBA?

Si spera che sia una domanda facile, ma mi piacerebbe una risposta tecnica a questo!

Qual è la differenza tra:

i = 4 

e

 Set i = 4 

in VBA? So che quest’ultimo genererà un errore, ma non capisco del tutto perché.

set è usato per assegnare un riferimento a un object. L’equivalente C sarebbe

  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) 

Nel tuo caso, produrrà un errore. 🙂

Set assegna un riferimento a un object. Per tutti gli altri compiti l’istruzione Let (implicita, facoltativa e poco usata) è corretta:

 Set object = New SomeObject Set object = FunctionReturningAnObjectRef(SomeArgument) Let i = 0 Let i = FunctionReturningAValue(SomeArgument) ' or, more commonly ' i = 0 i = FunctionReturningAValue(SomeArgument) 

Da MSDN :

Imposta parola chiave: in VBA, la parola chiave Set è necessaria per distinguere tra l’assegnazione di un object e l’assegnazione della proprietà predefinita dell’object. Poiché le proprietà predefinite non sono supportate in Visual Basic .NET, la parola chiave Set non è necessaria e non è più supportata.

Set è usato per impostare i riferimenti agli oggetti, invece di assegnare un valore.

In cima alla mia testa, Set è usato per assegnare oggetti COM alle variabili. Facendo un set, sospetto che sotto il cofano stia facendo una chiamata AddRef () sull’object per gestirlo per tutta la vita.

Quindi quando vuoi impostare un valore, non hai bisogno di “Set”; in caso contrario, se ci si riferisce a un object, ad es. foglio di lavoro / intervallo ecc., è necessario utilizzare “Imposta”.

Set è una parola chiave e viene utilizzato per assegnare un riferimento a un object in VBA.

Ad esempio, * sotto l’esempio mostra come usare Set in VBA.

Dim WS come foglio di lavoro

Imposta WS = ActiveWorkbook.Worksheets (“Foglio1”)

WS.Name = “Amit”