题
希望一个简单的问题,但我很喜欢一个技术性的回答这个!
是什么区别:
i = 4
和
Set i = 4
在VBA?我知道,后者将抛出一个错误,但我不完全理解为什么。
解决方案
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中, 是不是需要设置关键字和无 不再受支持。
设置用于设置对象引用,而不是分配值。
我的头顶部,设置用于COM对象赋给变量。通过这样做一套我怀疑是引擎盖下它做一个的AddRef()调用的对象来管理它的生命周期。
所以,当你想设置一个值,你不需要“设置”;否则,如果你指的是一个对象,例如工作表/范围等,则需要使用“设置”。
Set是一个关键字,它是用来分配给在一个VBA对象的引用。
有关例如 *下面的实施例显示了如何在VBA使用集。
昏暗WS作为工作表
设置WS = ActiveWorkbook.Worksheets( “工作表Sheet”)
WS.Name = “阿米特”
不隶属于 StackOverflow