关键字Set在VBA中究竟做了什么?
希望这是一个简单的问题,但是我很喜欢技术性的答案!
有什么区别:
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中不受支持,因此不需要Set关键字并且不再支持。
Set用于设置对象引用,而不是分配一个值。
在我的头顶,Set用于将COM对象分配给变量。 通过执行Set,我怀疑在引擎盖下它正在对对象执行AddRef()调用来管理它的生命周期。
所以当你想设置一个值时,你不需要“设置”。 否则,如果你指的是一个对象,如工作表/范围等,你需要使用“设置”。
Set是一个关键字,它用于为VBA中的对象分配一个引用。
例如,*下面的例子显示了如何使用VBA中的Set。
昏暗WS作为工作表
设置WS = ActiveWorkbook.Worksheets(“Sheet1”)
WS.Name =“Amit”