Risposte:
set
viene utilizzato per assegnare un riferimento a un oggetto. 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)
VBA on the left | C on the right
): Dim A, B As Range | Range A, B;
. Andare con la tua analogia, A = B | A = B;
sarebbe corretto (e sarebbe in C), ma in Set A = B | A = &B;
realtà è corretto in VBA (e fallirebbe in C). In VBA, A = B
e Set A = B
SONO entrambi equivalenti a quelli di C A = B;
! La distinzione accade altrove.
Nel tuo caso, produrrà un errore. :-)
Set
assegna un riferimento ad oggetto. Per tutte le altre assegnazioni l' Let
istruzione (implicita, facoltativa e poco utilizzata) è 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 Imposta è necessaria per distinguere tra assegnazione di un oggetto e assegnazione della proprietà predefinita dell'oggetto. Poiché le proprietà predefinite non sono supportate in Visual Basic .NET, la parola chiave Set non è necessaria e non è più supportata.
Object variable or With block variable not set
errore da VBA :)
Dalla parte superiore della mia testa, Set viene utilizzato per assegnare oggetti COM alle variabili. Facendo un set ho il sospetto che sotto il cofano stia facendo una chiamata AddRef () sull'oggetto per gestirne la durata.
Set è una parola chiave e viene utilizzato per assegnare un riferimento a un oggetto in VBA.
Ad esempio, * L'esempio seguente mostra come utilizzare Set in VBA.
Dim WS come foglio di lavoro
Set WS = ActiveWorkbook.Worksheets ("Foglio1")
WS.Name = "Amit"