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.
vba
variable-assignment
Jon Artus
quelle
quelle
Antworten:
set
wird verwendet, um einem Objekt einen Verweis zuzuweisen. Das C-Äquivalent wärequelle
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 aberSet A = B | A = &B;
in VBA tatsächlich korrekt (und es würde in C fehlschlagen). In VBAA = B
undSet A = B
sind beide gleichbedeutend mit CA = 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:quelle
Von MSDN :
quelle
Object variable or With block variable not set
Fehler von VBA hierher kommen :)Set wird zum Festlegen von Objektreferenzen verwendet, anstatt einen Wert zuzuweisen.
quelle
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.
quelle
Wenn Sie also einen Wert festlegen möchten, benötigen Sie nicht "Festlegen". Andernfalls müssen Sie "Set" verwenden, wenn Sie sich auf ein Objekt beziehen, z. B. ein Arbeitsblatt / einen Bereich usw.
quelle
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"
quelle