希望是一个简单的问题,但我非常想要一个技术性的答案!
有什么区别:
i = 4
和
Set i = 4
在 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:
Set 关键字: 在 VBA 中,Set 关键字是区分对象赋值和对象默认属性赋值所必需的。由于 Visual Basic .NET 不支持默认属性,因此不需要且不再支持 Set 关键字。
Set 用于设置对象引用,而不是分配值。
在我的脑海中,Set 用于将 COM 对象分配给变量。通过执行 Set 我怀疑它在引擎盖下正在对对象执行 AddRef() 调用以管理它的生命周期。
所以当你想设置一个值时,你不需要“设置”;否则,如果您指的是一个对象,例如工作表/范围等,您需要使用“设置”。
Set 是一个关键字,它用于分配对 VBA 中对象的引用。
例如,*下面的例子展示了如何在 VBA 中使用 Set。
将 WS 调暗为工作表
设置 WS = ActiveWorkbook.Worksheets("Sheet1")
WS.Name = "阿米特"