Что на самом деле делает набор ключевых слов в VBA?
надеюсь, простой вопрос, но мне очень нравится в этом!
в чем разница между:
i = 4
и
Set i = 4
в VBA? Я знаю, что последний бросит ошибку, но я не совсем понимаю, почему.
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 не требуется и нет дольше поддерживается.
Off the top of my head, Set используется для назначения COM-объектов переменным. Делая набор, я подозреваю, что под капотом он делает вызов AddRef() для объекта, чтобы управлять его жизнью.