Что на самом деле делает ключевое слово 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"

Другие вопросы по тегам