No.1
VBA中的數組定義和賦值,是編程進階的一個標誌。
無論什麼編程語文,數組的應用是一個十分重要的項目。
如何玩到熟練,就各有各的玩法。
但是基礎的東西,一定要掌握牢固。
這樣才在應用的過程中,不會迷茫。
No.2
首先看一下上面的圖片,是為對數組定義的一個集合。
Dim + 數組名
定義數組用Dim關鍵字,後面的一些參數,沒有也可以,表示任意大小或任意類型的數組。
Dim Arr(0 to 10)
這樣就定義了一個由最小下標為0,最大下標為10的一維數組,也就是Arr數組裡面包含了從0~10的11個變量。
可以給每一個變量賦值,如:
Arr(0)="1"
Arr(10)=10
顯然Arr(0)的值為「1」字符類型值。Arr(10)的值是數字類型,整形或長整形。可以用typename()測試一下。
統一給數組賦值可以用函數Array()進行。
Arr=Array("1","2","3")
值與值之間用","逗號間隔。
數組圖1
No.3
通常定義了一個固定長度的數組並不完全符合我們的要求,如果想再增加一個數組值,怎麼辦呢?
用下面的語句:
ReDim Arr(0 to 20)
ReDim是重新定義數組的意思,就是說把數組Arr重新定義成最小下標為0,最大下標為20的數組。
注意:這樣定義之後的數組,都將會清空,以前保存到數組裡的內容將沒有了。
如果我們不想把數組內容清空怎麼辦?
用下面的定義方式:
ReDim Preserve Arr(0 to 20)
這個定義將不改變原有數組的內容,而改變數組長度。
是不是比較簡單,複雜的工數組在二維,以及三維或多維。
定義方法同理,如:
Dim Arr(0 to 3,0 to 5)
Dim Arr(0 to 3,0 to 5,0 to 10)
比較複雜的多維數組應用就不介紹了,使用起來費大腦。
No.4
上圖為本例代碼,分別創建了三個數組進行舉例說明:
Private Sub CommandButton1_Click()Dim r As Range, s As WorksheetSet s = ThisWorkbook.ActiveSheetSet r = s.Range("C2")Dim NewArr, ro As Long, i As Longro = 7ReDim NewArr(1 To ro)For i = 1 To roNewArr(i) = r.Offset(i, 0)Next is.OLEObjects("TextBox1").Object.Value = "數組名:NewArr" & VBA.vbCrLf & "數組值:" & VBA.Join(NewArr)End Sub
循環方式給一維數組賦值,值為「數組圖1」表格內容,可以對應查看。
下面代碼是將數組定義和重複定義的一些方法統一到一起的例子:
Private Sub CommandButton3_Click()Dim r As Range, s As WorksheetSet s = ThisWorkbook.ActiveSheetSet r = s.Range("C2")Dim NewArr2, l As Longl = 6ReDim NewArr2(l)NewArr2 = Array("一月", "二月", "三月", "四月", "五月", "六月")'數組賦值l = 12ReDim Preserve NewArr2(l) '重定義數組長度,不改變數組內容NewArr2(6) = "七月"NewArr2(7) = "八月"NewArr2(8) = "九月"NewArr2(9) = "十月"NewArr2(10) = "十一月"NewArr2(11) = "十二月"s.OLEObjects("TextBox1").Object.Value = "數組名:NewArr2" & VBA.vbCrLf & "數組值:" & VBA.Join(NewArr2)End Sub
No.5
數組應用是一個逐漸學習的過程,不會一下子學會。
除非你特別聰明,大腦運行特別快。
一維數組很好理解,相當於一個名字雷同的一些變量組合。
多維數組就相對難了,如果學過矩陣,也好理解,如果會下圍棋二維數組也不太困難。
如果你對空間感知能力十分強大,數組對你一定是個小兒科!
總之,數組應用為什麼這麼普遍,因為其有不可替代的作用。
執行效率高是一點,然後還是效率高,通用性能強大。
總之,要學會。
之後還有一些,表格轉換數組的一些應用要介紹。
歡迎關注、收藏