除了RolandTumble對Cody Gray的答案的回答,這兩個答案都很好,這裏有另一種非常簡單而靈活的方法,當您在編碼時知道所有的數組內容 - 例如,你只想構建一個包含1,10,20和50的數組。這也使用變體聲明,但不使用ReDim。就像在Roland的回答中一樣,數組元素的枚舉數不需要具體知道,但可以通過使用uBound來獲得。
sub Demo_array()
Dim MyArray as Variant, MyArray2 as Variant, i as Long
MyArray = Array(1, 10, 20, 50) 'The key - the powerful Array() statement
MyArray2 = Array("Apple", "Pear", "Orange") 'strings work too
For i = 0 to UBound(MyArray)
Debug.Print i, MyArray(i)
Next i
For i = 0 to UBound(MyArray2)
Debug.Print i, MyArray2(i)
Next i
End Sub
我比任何創建數組的其他方法都更喜歡這個。最棒的是你可以在Array語句中添加或減去數組的成員,並且不需要做任何事情來編寫代碼。雞蛋添加到您的3元食品陣列,你只需要輸入
,「蛋」
在適當的地方,你就大功告成了。你的食物數組現在有4個元素,Dim中沒有什麼必須修改,並且ReDim完全被省略。
如果不需要基於0的數組 - 即使用MyArray(0) - 一種解決方案就是阻塞第一個元素的0或「」。
請注意,這可能會被一些編碼純粹主義者嚴重忽視;一個公正的反對意見是「硬數據」應該在Const語句中,而不是在例程中的代碼語句。另一種牛肉可能是,如果你將36個元素粘貼到一個數組中,你應該設置一個常量爲36,而不是無知的代碼。後一個反對意見是有爭議的,因爲它強制要求維護康斯坦丁,而不是依靠uBound。如果添加第37個元素,但將常量保持在36,則可能出現問題。
括號中的數字是數組的上限'UBound()'而不是大小。如果選項基本0(這是默認值),那麼這些值是1。 – Caltor 2015-04-01 12:20:17