Надеюсь, простой вопрос, но я бы хотел получить технический ответ на этот вопрос!
Какая разница между:
i = 4
и
Set i = 4
в VBA? Я знаю, что последний выдаст ошибку, но я не до конца понимаю, почему.
vba
variable-assignment
Джон Артус
источник
источник
Ответы:
set
используется для назначения ссылки на объект. С эквивалент будетисточник
VBA on the left | C on the right
):Dim A, B As Range | Range A, B;
. Идти по вашей аналогии,A = B | A = B;
было бы правильно (и это было бы в C), ноSet A = B | A = &B;
на самом деле правильно в VBA (и это не удалось бы в C). В VBAA = B
иSet A = B
ОБА эквивалентны СA = B;
! Различие происходит где-то еще.В вашем случае это приведет к ошибке. :-)
Set
назначает ссылку на объект Для всех других назначений (неявный, необязательный и малоиспользуемый)Let
оператор является правильным:источник
Из MSDN :
источник
Object variable or With block variable not set
ошибкой из VBA :)Set используется для установки ссылок на объекты, а не для присвоения значения.
источник
Вдобавок ко всему, Set используется для назначения COM-объектов переменным. Делая Set, я подозреваю, что под капотом он выполняет AddRef () для объекта, чтобы управлять его временем жизни.
источник
Поэтому, когда вы хотите установить значение, вам не нужно «Set»; в противном случае, если вы имеете в виду объект, например, рабочий лист / диапазон и т. д., вам нужно использовать «Установить».
источник
Set - это ключевое слово, и оно используется для назначения ссылки на объект в VBA.
Например, * Пример ниже показывает, как использовать Set в VBA.
Dim WS As Worksheet
Set WS = ActiveWorkbook.Worksheets ("Sheet1")
WS.Name = "Amit"
источник