2008-12-08 92 views
119

希望有一個簡單的問題,但我非常喜歡這個技術性的答案!關鍵字Set在VBA中實際做了什麼?

有什麼區別:

i = 4 

Set i = 4 
在VBA

?我知道後者會拋出一個錯誤,但我不完全明白爲什麼。

+2

Backgrounder here:http://stackoverflow.com/a/9924325/17034 – 2012-04-19 19:33:47

回答

79

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) 
8

Set用於設置對象引用,而不是分配值。

62

就你而言,它會產生一個錯誤。 :-)

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) 
39

MSDN

設定關鍵字:在VBA中,設置關鍵字 是必要的以區分 對象的分配和對象的默認屬性的分配 。 由於默認屬性不是 在Visual Basic .NET中受支持,所以不需要 Set關鍵字,並且不支持更長的 。

+0

找到了,但鏈接到您在MSDN上找到的文章會更好:) – 2008-12-08 14:01:29

+0

@Neil - 鏈接在那裏如果您點擊MSDN在我的文章。 – Galwegian 2008-12-08 14:10:58

+1

當複製關閉MSDN,然後至少正確的文章。這個是指VB.NET,而不是VBA。 – Tomalak 2008-12-08 14:33:06

1

關閉我的頭頂,Set用於將COM對象分配給變量。通過執行Set,我懷疑在引擎蓋下它正在對對象執行AddRef()調用來管理它的生命週期。

-1

Set是一個關鍵字,它用於爲VBA中的對象分配一個引用。

對於例如, *下面的示例演示如何在VBA中使用集。

昏暗的WS作爲工作表

集WS = ActiveWorkbook.Worksheets( 「工作表Sheet1」)

WS.Name = 「阿密特」

0

所以,當你想設置一個值,你不」 t需要「Set」;否則,如果你指的是一個對象,例如工作表/範圍等,您需要使用「設置」。

相關問題