希望这是一个简单的问题,但我想得到一个技术性的答案!
以下两者有什么区别:
i = 4
和
Set i = 4
在VBA中使用"Resume Next"和"Resume"语句有什么区别?我知道后者会抛出错误,但我不完全理解为什么。
以下两者有什么区别:
i = 4
和
Set i = 4
在VBA中使用"Resume Next"和"Resume"语句有什么区别?我知道后者会抛出错误,但我不完全理解为什么。
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)
VBA在左边|C在右边
):Dim A,B As Range | Range A,B;
。按照您的比喻,A = B | A = B;
是正确的(并且在C中也是正确的),但是在VBA中,Set A = B | A = &B;
才是正确的(而且在C中会失败)。在VBA中,A = B
和Set A = B
都等同于C的A = B;
!区别发生在其他地方。 - Niko O在你的情况下,它会产生一个错误。 :-)
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。
Dim WS As Worksheet
Set WS = ActiveWorkbook.Worksheets("Sheet1")
WS.Name = "Amit"