Что на самом деле делает ключевое слово Set в VBA?
Надеюсь, простой вопрос, но я бы хотел получить технический ответ на этот вопрос!
В чем разница между:
i = 4
а также
Set i = 4
в VBA? Я знаю, что последний выдаст ошибку, но я не до конца понимаю, почему.
7 ответов
set
используется для назначения ссылки на объект. С эквивалент будет
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)
В вашем случае это приведет к ошибке.:-)
Set
назначает ссылку на объект Для всех других назначений (неявное, необязательное и малоиспользуемое) Let
утверждение верно:
Set object = New SomeObject
Set object = FunctionReturningAnObjectRef(SomeArgument)
Let i = 0
Let i = FunctionReturningAValue(SomeArgument)
' or, more commonly '
i = 0
i = FunctionReturningAValue(SomeArgument)
Из MSDN:
Ключевое слово Set: В VBA ключевое слово Set необходимо для различения назначения объекта и назначения свойства объекта по умолчанию. Поскольку свойства по умолчанию не поддерживаются в Visual Basic .NET, ключевое слово Set не требуется и больше не поддерживается.
Set используется для установки ссылок на объекты, а не для присвоения значения.
Вдобавок ко всему, Set используется для назначения COM-объектов переменным. Делая Set, я подозреваю, что под капотом он выполняет вызов AddRef() для объекта, чтобы управлять его временем жизни.
Поэтому, когда вы хотите установить значение, вам не нужно "Set"; в противном случае, если вы имеете в виду объект, например, рабочий лист / диапазон и т. д., вам нужно использовать "Set".
Set - это ключевое слово, и оно используется для назначения ссылки на объект в VBA.
Например, * Пример ниже показывает, как использовать Set в VBA.
Dim WS As Worksheet
Set WS = ActiveWorkbook.Worksheets ("Sheet1")
WS.Name = "Amit"