VBA數組的深入講解:創建數組的方法及數組大小的判斷

大家好,我們今日繼續講解VBA代碼解決方案的第111講內容:VBA數組的深入講解,如何創建VBA數組及數組大小的判斷。

一、創建數組的必要方法:

1、使用Array創建數組,看以下代碼:

Sub Mynz_sz1()

Dim arr()

arr = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) '將1到10十個自然數賦給數組arr

[a1].Resize(1, 10) = arr '將數組的值輸入單元格,注意這裡沒有用轉置函數

End Sub

代碼窗口

VBA數組的深入講解:創建數組的方法及數組大小的判斷

運行:

VBA數組的深入講解:創建數組的方法及數組大小的判斷

特別注意點1:使用Array創建的數組索引號默認從0開始,當然,如果已經用"OPTION BASE 1"語句指定了的另當別論。

特別注意點2:如果賦的值是文本,那需要用英文引號引起來,如:

代碼: arr = Array("張一", "徐一", "陳一", "王一")

2、使用Split創建數組

Split的作用是把一個文本,根據指定的分隔符,建立一個數組。感覺就有點像我們EXCEL中的基礎操作中的"分列"。不同的是"分列"操作是將一個單元格的文本按指定的分隔符分開,存放在同行的多個單元格里,而Split的作用是將一個文本(也可以是存放在單元格里的)按指定的分隔符分開,存放在一個數組變量裡。

arr = Split("張一,徐一,陳一,王一,許一,張二,陳二,張三,徐二,張四", ",")

特別注意點3:用Split把文本轉換成數組,索引號總是從0開始。不管你是否使用了Option Base語句,這點和Array不同。

3、通過Range賦值創建數組

(1)循環給單元格賦值

比如想把A1:A100單元格的值給數組arr,則代碼為:

Sub Mynz_sz2()

Dim arr(1 To 29)

For i = 1 To 29

arr(i) = Cells(i, 1)

Next

[d1].Resize(29, 1) = Application.WorksheetFunction.Transpose(arr)

End Sub

代碼窗口:

VBA數組的深入講解:創建數組的方法及數組大小的判斷

運行:

VBA數組的深入講解:創建數組的方法及數組大小的判斷

(2)直接等於單元格區域。這個很簡單,直接數組名等於單元格區域就可以了。比如想把A1:A100單元格的值給數組arr,代碼還可以簡單寫為:

代碼:

arr = [a1:a100]

二 數組大小的判斷方法:UBound和LBound函數

我們定義數組時,我們可以指定數組的起始索引號不為0,而為1或其他的任意數。比如Dim arr(5 to 6)定義的這個數組起始索引號為5,共有兩個元素。

那麼,對於一個已經定義了的數組,我們想知道它的最大索引號(上界)和最小索引號(下界)是多少,怎麼辦呢?別慌,用UBound和LBound兩個函數就可以了。

如,要想知道數組arr的上界是多少,則:UBound(arr);要想知道數組arr的下界是多少,則:LBound(arr)。想知道數組有多少個元素,則:UBound(arr)- LBound(arr)+1

如代碼:

Sub Mynz_sz3()

Dim arr(10 To 50)

Dim brr(1 To 10, 1 To 100)

MsgBox "第一個一維數組數組的上標是:" & UBound(arr) & Chr(13) _

& "數組的下標是:" & LBound(arr) & Chr(13) _

& "數組的元素個數是:" & UBound(arr) - LBound(arr) + 1 & Chr(13) _

& "第二個兩維數組第一維的上界是:" & UBound(brr, 1) & Chr(13) _

& "第二維的上界是:" & UBound(brr, 2)

End Sub

VBA數組的深入講解:創建數組的方法及數組大小的判斷

運行後:

VBA數組的深入講解:創建數組的方法及數組大小的判斷

今日內容迴向:

1 如何創建數組?

2 數組的大小如何判斷


分享到:


相關文章: