Что делает ключевое слово Set в VBA?

130 Jon Artus [2008-12-08 16:54:00]

Надеюсь, это простой вопрос, но мне бы очень понравился технический ответ на этот вопрос.

Какая разница между:

i = 4

и

Set i = 4

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

variable-assignment vba


7 ответов


85 Решение Treb [2008-12-08 17:00:00]

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)

68 Tomalak [2008-12-08 16:57:00]

В вашем случае это приведет к ошибке.: -)

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)

41 Galwegian [2008-12-08 16:58:00]

От MSDN:

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


9 LeppyR64 [2008-12-08 16:57:00]

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


1 Sean [2008-12-08 16:59:00]

В верхней части моей головы Set используется для назначения COM-объектов переменным. Выполняя набор, я подозреваю, что под капотом он выполняет вызов AddRef() объекта для управления его жизнью.


0 Eric Wang [2014-09-05 10:37:00]

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


-1 Amit Singh [2013-11-11 08:05:00]

Установите ключевое слово и используется для назначения ссылки на объект в VBA.

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

Dim WS As Worksheet

Установить WS = ActiveWorkbook.Worksheets( "Sheet1" )

WS.Name = "Amit"