关键字 Set 在 VBA 中实际做什么?

希望这是一个简单的问题,但我想要一个技术性的答案!

有什么区别:

i = 4

还有

Set i = 4

我知道后者会抛出一个错误,但我不完全理解为什么。

213459 次浏览

集用于设置对象引用,而不是分配值。

在您的情况下,它将产生一个错误。 : -)

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:

Set Keyword: 在 VBA 中,Set 关键字 有必要区分 对象的赋值和赋值 对象的默认属性。 因为默认属性不是 在 VisualBasic.NET 中支持,则 Set 关键字不需要,并且是 no 更长的支持。

在我脑海中,Set 用于将 COM 对象分配给变量。通过执行 Set,我怀疑它在底层对对象执行 AddRef ()调用来管理对象的生存期。

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 是一个关键字,用于在 VBA 中分配对对象的引用。

例如, * 下面的例子展示了如何在 VBA 中使用 Set。

作为工作表的模糊 WS

设置 WS = ActiveWorkbook.Worksheet (“ Sheet1”)

WS.Name = “ Amit”

所以当你想要设置一个值的时候,你不需要“设置”; 否则,如果你引用一个对象,比如工作表/范围等,你需要使用“设置”。