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

时间:2008-12-08 13:54:30

标签: vba variable-assignment

希望这是一个简单的问题,但我非常喜欢这个技术答案!

有什么区别:

i = 4

Set i = 4
在VBA中

?我知道后者会引发错误,但我不完全理解为什么。

7 个答案:

答案 0 :(得分:93)

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)

答案 1 :(得分:74)

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

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)

答案 2 :(得分:42)

来自MSDN

  

设置关键字:在VBA中,设置关键字   有必要区分   分配对象和赋值   对象的默认属性。   由于默认属性不是   在Visual Basic .NET中支持   不需要设置关键字,也不需要   更长时间的支持。

答案 3 :(得分:10)

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

答案 4 :(得分:1)

在我的脑海中,Set用于将COM对象分配给变量。通过做一个Set我怀疑它是在对象上做一个AddRef()调用来管理它的生命周期。

答案 5 :(得分:0)

所以当你想设置一个值时,你不需要“Set”;否则,如果你指的是一个物体,例如,工作表/范围等,您需要使用“设置”。

答案 6 :(得分:-1)

Set是一个关键字,它用于在VBA中为对象分配引用。

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

Dim WS As Worksheet

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

WS.Name =“Amit”