Надеюсь, это простой вопрос, но мне бы очень понравился технический ответ на этот вопрос.
Какая разница между:
i = 4
и
Set i = 4
в VBA? Я знаю, что последнее вызовет ошибку, но я не совсем понимаю, почему.
Надеюсь, это простой вопрос, но мне бы очень понравился технический ответ на этот вопрос.
Какая разница между:
i = 4
и
Set i = 4
в VBA? Я знаю, что последнее вызовет ошибку, но я не совсем понимаю, почему.
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:
Установить ключевое слово: В VBA ключевое слово Set необходимо различать присвоение объекта и присвоение свойства по умолчанию объекта. Поскольку свойства по умолчанию не являются поддерживается в Visual Basic.NET, Установить ключевое слово не нужно и нет. дольше поддерживаются.
Set используется для установки ссылок на объекты, а не для назначения значения.
В верхней части моей головы Set используется для назначения COM-объектов переменным. Выполняя набор, я подозреваю, что под капотом он выполняет вызов AddRef() объекта для управления его жизнью.
Поэтому, когда вы хотите установить значение, вам не нужно "Установить"; в противном случае, если вы имеете в виду объект, например. рабочий лист/диапазон и т.д., вам нужно использовать "Установить".
Установите ключевое слово и используется для назначения ссылки на объект в VBA.
Например, * Ниже пример показывает, как использовать Set в VBA.
Dim WS As Worksheet
Установить WS = ActiveWorkbook.Worksheets( "Sheet1" )
WS.Name = "Amit"