Что на самом деле делает набор ключевых слов в VBA?


надеюсь, простой вопрос, но мне очень нравится в этом!

в чем разница между:

i = 4

и

Set i = 4

в VBA? Я знаю, что последний бросит ошибку, но я не совсем понимаю, почему.

7 133

7 ответов:

set используется для задания ссылки на объект. Эквивалент C будет

 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:

Установить Ключевое Слово: в VBA, Ключевое слово Set необходимо различать назначение объекта и присвоение свойства объекта по умолчанию. Так как свойства по умолчанию не поддерживается в Visual Basic .NET, Ключевое слово Set не требуется и нет дольше поддерживается.

Set используется для установки ссылок на объекты, а не для присвоения значения.

Off the top of my head, Set используется для назначения COM-объектов переменным. Делая набор, я подозреваю, что под капотом он делает вызов AddRef() для объекта, чтобы управлять его жизнью.

поэтому, когда вы хотите установить значение, вам не нужно "установить", в противном случае, если вы ссылаетесь на объект, например, лист/круг и т. д., вам нужно использовать "Set".

Set-это ключевое слово, которое используется для назначения ссылки на объект в VBA.

например., * Ниже пример показывает, как использовать набор в VBA.

Dim WS как рабочий лист

Set WS = ActiveWorkbook.Рабочие Листы ("Лист1")

WS.Name = "Амит"