微信公眾號:excelperfect
本文系因違規而刪除的2017年10月24日推送文章經修改後重新推送,已看過的朋友可直接飄過,免得浪費時間。
在某些情形下,可以使用Array函數方便地填充數組。例如,下面的代碼:
Dim myArray
myArray =Array("國慶節", "中秋節", "元旦", "春節")
等價於:
Dim myArray(3)
myArray(0) = "國慶節"
myArray(1) = "中秋節"
myArray(2) = "元旦"
myArray(3) = "春節"
因此,Array函數可以將一組值批量賦給一個數組。
Array函數語法
Array函數返回一個Variant型數組,該數組由傳遞給該函數的參數組成。其語法為:
Array([元素1],[元素2],…,[元素n])
其中:
元素1~n可以是任意數據類型,代表賦給數組元素的數據。
由Array函數返回的數組只可賦值給一個Variant型變量,不能賦值給已聲明為數組變量的變量。
Array函數返回的數組中元素的順序與傳遞給函數的參數值的順序相同。
Array函數總是返回Variant類型的數組,但元素的數據類型可以不同,這取決於傳遞給該函數的數值類型。例如Array("One", 2, 3.14)返回的數組中,第1個元素是String型,第2個是Integer型,第3個是Double型。
Array函數創建的數組下限由Option Base確定。若忽略該語句,則數組下限值為0。
若Array函數沒有任何參數,則會創建一個空數組。
Array函數返回的數組是動態數組,其初始大小是Array函數的參數數量,可以使用ReDim、ReDim Preserve來對所創建的數組重新定義維數。
如果使用VBA.Array(),例如
Dim myArray As Variant
myArray = VBA.Array(「國慶節」,」中秋節」,」元旦」)
那麼數組的基數總是0,與Option Base的設置無關。即Option Base 1時,myArray(1)的值仍然是「中秋節」。
編程技巧
1. 在已確定元素內容時,使用Array函數更有效率。例如:
Dim myArray AsVariant
myArray =Array("國慶節", "中秋節", "元旦", "春節")
2. 可以使用Array函數創建多維數組,例如:
Dim myArray AsVariant
myArray =Array(Array("One", "Two", "Three"), _
Array("Four","Five", "Six"), _
Array("Seven","Eight", "Nine"))
創建了一個3行3列的二維數組。
然而,要訪問這個數組中的元素,例如第2行第3列的元素數據「Six」,不能夠使用:
myArray(1, 2)
這樣,將產生「下標越界」錯誤。
而應該使用:
myArray(1)(2)
或者,先聲明一個Variant型變量,然後將相應行的第1維賦值給該變量,再使用該變量來訪問相應列的元素數據,例如:
Dim vElement AsVariant
vElement =myArray(1)
MsgBox vElement(2)
3. 可以使用Array函數來為ActiveX 列表框或組合框控制項賦值,例如:
Me.ListBox1.List =Array("國慶節", "中秋節", "元旦", "春節")
給列表框添加了4個節日名。
4. 可以使用Array函數創建控制項數組,即將控制項名稱作為Array函數的參數。然後,可以將數組元素當作相應的控制項對象來使用,例如:
Private SubCommandButton1_Click()
Me.ListBox1.Clear
Me.ListBox1.List = Array("國慶節", "中秋節", "元旦", "春節")
Me.ListBox1.ListIndex = 0
End Sub
Private SubCommandButton2_Click()
Dim myArray As Variant
myArray = Array(ListBox1, CommandButton1)
MsgBox myArray(0).Text
End Sub
運行後的結果如下圖1所示。
圖1
示例
示例1:使用Array函數創建數組
Sub TestArray()
Dim myArray() As Variant
'從逗號分隔的字符串列表中創建數組
myArray = Array("One","Two", "Three")
'顯示數組元素
MsgBox myArray(0) & vbCr &myArray(1) & vbCr & myArray(2)
'也可以使用數值作為參數
myArray = Array(10, 20, 30)
'顯示數組元素
MsgBox myArray(0) & vbCr &myArray(1) & vbCr & myArray(2)
End Sub
示例2:下面的示例先使用Array函數將一組值賦給變量myArray,然後將該變量中的值輸入到工作表Sheet1的第1行。
Option Base 1
Sub ArrayTest()
Dim myArray As Variant
Dim iCount As Integer
myArray = Array("姓名",」性別」,」成績」)
With Worksheets(「Sheet1」)
ForiCount = 1 To UBound(myArray)
.Cells(1,iCount).Value = myArray(iCount)
NextiCount
End With
End Sub
運行代碼後的結果如圖2所示。
圖2
在某些情形下,需要檢驗某個變量是否為數組,以便於後續操作,此時,可以使用IsArray函數。
IsArray函數語法
IsArray函數返回一個Boolean值,表明傳遞給該函數的變量是否為數組。其語法為:
IsArray(varname)
其中:
編程技巧
在不確定使用的變量是否為數組時,如果試圖訪問不存在的數組中的元素或者對其使用數組函數(如LBound或者UBound),就會導致錯誤。此時,可以先使用IsArray函數來確定其是否為數組,然後再進行後續相應的操作。
例如,下面的代碼段檢查變量myArray是否為數組,若不是則退出:
If NotIsArray(myArray) Then Exit Sub
相關連結:
VBA進階 | 數組基礎01: 用最淺顯的介紹來幫助你認識數組
VBA進階 | 數組基礎02: 簡單的數組操作
VBA進階 | 數組基礎03: 二維數組
VBA進階 | 數組基礎04: 運用數組處理工作表數據
VBA進階 | 數組基礎05: 動態數組
本文屬原創文章,轉載請註明出處。
歡迎在下面留言,完善本文內容,讓更多的人學到更完美的知識。
歡迎關注[完美Excel]微信公眾號:
方法1—在微信「添加朋友」或者通訊錄中搜索「完美Excel」或者「excelperfect」後點擊關注。
方法2—掃一掃下面的二維碼