vba中的set語句有什么作用
交流一下。非高手
最簡單的理解就是:將“對象”賦值給“變量”,對“對象”和”賦值“理解是關鍵,如果是定義就可以用dim了,比如在AutoCAD VBA中 可以"dim newline as acadline"來定義,而用“set newline=*e(point1,point2)"建一個新直線,excel VBA中
”set newworksheet=*"來新建一個工作簿
Excel VBA中的Set是怎么使用的
Set 語句
請參閱 示例 特性
將對象引用賦給變量或屬性。
語法
Set objectvar = {[New]
objectexpression | Nothing}
Set 語句的語法包含下面部分:
部分
描述
objectvar
必需的。變量或屬性的名稱,遵循標準變量命名約定。
New
可選的。通常在聲明時使用 New,以便可以隱式創建對象。如果 New 與
Set 一起使用,則將創建該類的一個新實例。如果
objectvar 包含了一個對象引用,則在賦新值時釋放該引用。不能使用 New 關鍵字來創建任何內部數據類型的新實例,也不能創建從屬對象。
objectexpression
必需的。由對象名,所聲明的相同對象類型的其它變量,或者返回相同對象類型的函數或方法所組成的表達式。
Nothing
可選的。斷絕 objectvar 與任何指定對象的關聯。若沒有其它變量指向
objectvar 原來所引用的對象,將其賦為 Nothing
會釋放該對象所關聯的所有系統及內存資源。
說明
為確保合法,objectvar 必須是與所賦對象相一致的對象類型。
Dim、Private、Public、ReDim以及 Static 語句都只聲明了引用對象的變量。在用
Set 語句將變量賦為特定對象之前,該變量并沒有引用任何實際的對象。
下面的示例說明了如何使用 Dim 來聲明 Form1 類型的數組。Form1 實際上還沒有實例。然后使用
Set 將新創建的 Form1 的實例的引用賦給 myChildForms 變量。在 MDI
應用程序中可以使用這些代碼來創建子窗體。
Dim myChildForms(1 to 4) As Form1
Set myChildForms(1) = New Form1
Set myChildForms(2) = New Form1
Set myChildForms(3) = New Form1
Set myChildForms(4) = New Form1
通常,當使用 Set 將一個對象引用賦給變量時,并不是為該變量創建該對象的一份副本,而是創建該對象的一個引用。可以有多個對象變量引用同一個對象。因為這些變量只是該對象的引用,而不是對象的副本,因此對該對象的任何改動都會反應到所有引用該對象的變量。不過,如果在
Set 語句中使用 New 關鍵字,那么實際上就會新建一個該對象的實例。
關于EXCEL中vba的SET什么意思啊
VBA中SET是定義一個有屬性和方法的對象
Excel版本參考:2010
1、語法
Set objectvar = {[New]
objectexpression | Nothing}
Set 語句的語法包含下面部分:
描述
objectvar
必需的。變量或屬性的名稱,遵循標準變量命名約定。
New
可選的。通常在聲明時使用 New,以便可以隱式創建對象。如果 New 與
Set 一起使用,則將創建該類的一個新實例。如果
objectvar 包含了一個對象引用,則在賦新值時釋放該引用。不能使用 New 關鍵字來創建任何內部數據類型的新實例,也不能創建從屬對象。
objectexpression
必需的。由對象名,所聲明的相同對象類型的其它變量,或者返回相同對象類型的函數或方法所組成的表達式。
Nothing
可選的。斷絕 objectvar 與任何指定對象的關聯。若沒有其它變量指向
objectvar 原來所引用的對象,將其賦為 Nothing 會釋放該對象所關聯的所有系統及內存資源。
2、說明:
為確保合法,objectvar 必須是與所賦對象相一致的對象類型。
Dim、Private、Public、ReDim以及 Static 語句都只聲明了引用對象的變量。在用
Set 語句將變量賦為特定對象之前,該變量并沒有引用任何實際的對象。
下面的示例說明了如何使用 Dim 來聲明 Form1 類型的數組。Form1 實際上還沒有實例。然后使用
Set 將新創建的 Form1 的實例的引用賦給 myChildForms 變量。在 MDI
應用程序中可以使用這些代碼來創建子窗體。
Dim myChildForms(1 to 4) As Form1
Set myChildForms(1) = New Form1
Set myChildForms(2) = New Form1
Set myChildForms(3) = New Form1
Set myChildForms(4) = New Form1
通常,當使用 Set 將一個對象引用賦給變量時,并不是為該變量創建該對象的一份副本,而是創建該對象的一個引用。可以有多個對象變量引用同一個對象。因為這些變量只是該對象的引用,而不是對象的副本,因此對該對象的任何改動都會反應到所有引用該對象的變量。不過,如果在
Set 語句中使用 New 關鍵字,那么實際上就會新建一個該對象的實例。
3、Set 語句示例
該示例使用 Set 語句將對象引用賦給變量。假定 YourObject 指向一個具有 Text
屬性的合法對象。
Dim YourObject, MyObject, MyStr
Set MyObject = YourObject '對象引用賦值。
'MyObject 和 YourObject 引用同一個對象。
* = "Hello World" '初始化屬性。
MyStr = * '返回 "Hello World"。
'脫離關聯。MyObject 不再引用 YourObject。
Set MyObject = Nothing '釋放該對象。
VBA中程序語句Set PsDoc = *("d:\My
Set word = CreateObject("*ation")
我把前面一個word改一下名稱好解釋一點。
Set myword = CreateObject("*ation")
myword這個對象變量就代表了office的word應用程序。有了它,我們才能打開一個word文檔。
Set PsDoc = *("d:\My Documents\" & Adoc)
把指定路徑下的word文檔打開,并且把這個文檔賦值給對象變量PsDoc。這樣一來,PsDoc就代表了那個指定路徑的文檔。
excel vba中set xxx = yyy和dim xxx as yy,這兩個語句有什么區別
兩個概念呀,DIM 是VB聲明變量的關鍵字,不管是對象變量 還是普通變量,都是用DIM 顯式聲明
set是給對象變量賦值的關鍵字,普通變量賦值其實前面有個省略了的關鍵字let
比如定義倆個變量,一個range(對象變量) 另一個integer(普通變量)
dim rng as range
dim i as integer
set rng=Sheets(1).Usedrange
i=6完整的應該是let i=6 但是省略成 i=6
關于set 語句的問題
Dim OldCheckMenu As Menu OldCheckMenu。
Checked = False 這兩句挨著的話,下面這句肯定出錯,因為OldCheckMenu只是聲明了類型,還沒被賦值。 這些話是在菜單項的Click里的代碼嗎? 是想實現在菜單里點了一項后,這項的前面打勾,并把其他選項前面的勾去掉嗎? 比如在“難易程度”的菜單下面有“簡單”“普通”“難”三個選項,選哪個哪個前面就打一個勾,并且看上去只能單選? 如果是這樣, 1。
大概 Dim OldCheckMenu As Menu 要放到代碼的最上面,成為各個Sub內都能看到的變量。 2。
大概做 OldCheckMenu。Checked = False 之前要判斷一下OldCheckMenu是不是Nothing。
3。 Set oldcheekmenu = mnuEasy 里的oldcheekmenu應寫成OldCheckMenu。
4。 mnuEasy。
Checked = ture 里的ture應該是True。 大概要改為: Dim OldCheckMenu As Menu Private Sub mnuEasy_Click() If Not OldCheckMenu Is Nothing Then OldCheckMenu。
Checked = False End If Set OldCheckMenu = mnuEasy mnuEasy。Checked = True End Sub 。
。 。