返回列表 上一主題 發帖

[發問] 如何才能用列舉方式來指定整數陣列的內容值

  1. Sub nn()
  2. Dim ar(0 To 10) As Integer, ay(0 To 3) As String, y
  3. y = Array(1, "L", 2, "K") '陣列中的資料可以是不同型態資料
  4. MsgBox Join(y, Chr(10))
  5. For i = 0 To 10
  6. ar(i) = i
  7. Next
  8. For i = 0 To 3
  9. ay(i) = i
  10. Next
  11. a = Array(ar, ay)
  12. MsgBox TypeName(a) '顯示變數a的資料型態
  13. For Each c In a
  14.    If TypeName(c) = "String()" Then MsgBox Join(c, Chr(10)) '如果是字串一維陣列就顯示內容
  15.    If TypeName(c) = "Integer()" Then MsgBox Application.Sum(c) '如果是整數一維陣列就顯示加總結果
  16. Next
  17. End Sub
複製代碼
Array是函數,其中的元素就等同函數的引數,所以它是傳回一個陣列型態的變數,他是Variant 型態
這個Variant 型態的元素是可以為任何型態(包含陣列)的元素
用Array函數建立的陣列,傳回的值,其型態就是Variant
這就是VBA說明中所說:Variant 變數可以含有任何型態的陣列,除了固定長度字串和 使用者自訂型態以外

以Dim宣告的陣列是布置一個陣列空間,而不是直接賦值,所以必須針對每個空間一一給值
當你在DIM宣告時沒有指定陣列大小時,該陣列就是動態陣列
所以必須使用REDIM來重新定義空間大小,才能再將元素寫入該陣列

我曾用一個比喻
Array函數,就是一碗盛好東西的碗,裡面的東西是可以裝入不同的物品
Dim宣告的變數他是一個空的碗,如果沒有宣告型態時,他是可以裝任何不同物品的空碗,不過在宣告時並沒有裝物品
所以要裝物品時,要先準備好數量足夠的空碗才能將一堆物品有規則的放進碗裡
學海無涯_不恥下問

TOP

        靜思自在 : 原諒別人就是善待自己。
返回列表 上一主題