Miejmy nadzieję, że to łatwe pytanie, ale chciałbym uzyskać techniczną odpowiedź na to!
Jaka jest różnica pomiędzy:
i = 4
i
Set i = 4
w VBA? Wiem, że ten ostatni wyrzuci błąd, ale nie do końca rozumiem dlaczego.
vba
variable-assignment
Jon Artus
źródło
źródło
Odpowiedzi:
set
służy do przypisania odniesienia do obiektu. Odpowiednik C byłbyźródło
VBA on the left | C on the right
)Dim A, B As Range | Range A, B;
. Idąc z twoją analogią,A = B | A = B;
byłoby poprawne (i byłoby w C), ale wSet A = B | A = &B;
rzeczywistości jest poprawne w VBA (i zawiodłoby w C). W VBAA = B
iSet A = B
OBA są odpowiednikami CA = B;
! To rozróżnienie dzieje się gdzie indziej.W twoim przypadku spowoduje to błąd. :-)
Set
przypisuje odniesienie do obiektu. Dla wszystkich innych przypisań instrukcja (niejawna, opcjonalna i rzadko używana)Let
jest poprawna:źródło
Z MSDN :
źródło
Object variable or With block variable not set
błędem z VBA :)Zestaw służy do ustawiania odniesień do obiektów, a nie do przypisywania wartości.
źródło
Z góry myślę, że Set służy do przypisywania obiektów COM do zmiennych. Robiąc Set, podejrzewam, że pod maską wykonuje wywołanie AddRef () na obiekcie, aby zarządzać jego okresem życia.
źródło
Więc kiedy chcesz ustawić wartość, nie potrzebujesz "Ustaw"; w przeciwnym razie, jeśli odnosisz się do obiektu, np. arkusza / zakresu itp., musisz użyć opcji „Ustaw”.
źródło
Set jest słowem kluczowym i służy do przypisywania odniesienia do obiektu w VBA.
Na przykład * Poniższy przykład pokazuje, jak używać Set w VBA.
Dim WS As Arkusz
Ustaw WS = ActiveWorkbook.Worksheets („Sheet1”)
WS.Name = "Amit"
źródło