Hoffentlich eine einfache Frage, aber ich hätte gerne eine technische Antwort darauf!
Was ist der Unterschied zwischen:
i = 4
und
Set i = 4
in VBA? Ich weiß, dass Letzteres einen Fehler auslösen wird, aber ich verstehe nicht ganz warum.
Hoffentlich eine einfache Frage, aber ich hätte gerne eine technische Antwort darauf!
Was ist der Unterschied zwischen:
i = 4
und
Set i = 4
in VBA? Ich weiß, dass Letzteres einen Fehler auslösen wird, aber ich verstehe nicht ganz warum.
Antworten:
set
wird verwendet, um einem Objekt einen Verweis zuzuweisen. Das C-Äquivalent wäre
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;
. Mit Ihrer Analogie zu gehen, A = B | A = B;
wäre korrekt (und es wäre in C), ist aber Set A = B | A = &B;
in VBA tatsächlich korrekt (und es würde in C fehlschlagen). In VBA A = B
und Set A = B
sind beide gleichbedeutend mit C A = B;
! Die Unterscheidung erfolgt woanders.
In Ihrem Fall wird ein Fehler ausgegeben. :-)
Set
weist eine Objektreferenz zu. Für alle anderen Zuweisungen ist die (implizite, optionale und wenig verwendete) Let
Anweisung korrekt:
Set object = New SomeObject
Set object = FunctionReturningAnObjectRef(SomeArgument)
Let i = 0
Let i = FunctionReturningAValue(SomeArgument)
' or, more commonly '
i = 0
i = FunctionReturningAValue(SomeArgument)
Von MSDN :
Set-Schlüsselwort: In VBA ist das Set-Schlüsselwort erforderlich, um zwischen der Zuweisung eines Objekts und der Zuweisung der Standardeigenschaft des Objekts zu unterscheiden. Da Standardeigenschaften in Visual Basic .NET nicht unterstützt werden, wird das Schlüsselwort Set nicht benötigt und nicht mehr unterstützt.
Object variable or With block variable not set
Fehler von VBA hierher kommen :)
Set wird verwendet, um Variablen COM-Objekte zuzuweisen. Wenn ich ein Set mache, vermute ich, dass es unter der Haube einen AddRef () -Aufruf für das Objekt ausführt, um dessen Lebensdauer zu verwalten.
Set ist ein Schlüsselwort und wird verwendet, um einem Objekt in VBA einen Verweis zuzuweisen.
Zum Beispiel zeigt * das folgende Beispiel, wie Set in VBA verwendet wird.
WS als Arbeitsblatt dimmen
Setze WS = ActiveWorkbook.Worksheets ("Sheet1")
WS.Name = "Amit"