2014-12-13 39 views

回答

5

我知道我見過這個地方,但不得不尋找了一下:

Sub test() 
Dim A As Variant 
A = [{1,2,3;4,5,6;7,8,9}] 
Debug.Print A(2, 2) 
End Sub 
+1

很好的解決方法。 '[..]'需要一個工作表範圍,但是您需要提供一個值數組。真棒! – ja72 2014-12-13 20:50:31

+0

請注意,這種技術創建一個基於1的數組,不像Array()函數返回一個從零開始的數組。此外,它在Excel中工作,但不在Access中。 – 2014-12-14 01:16:56

+0

湯姆,我同意並且最喜歡你的回答。 – 2014-12-14 02:07:34

1

我認爲這是不可能的。用Array function您只能指定一個值列表,而不是數字。

陣列函數語法

陣列(arglist中)

所需arglist參數是分配給包含在所述陣列的所述元件值的逗號分隔列表變體。您可以影響下限。使用選項庫1然後Array()函數返回數組whith下限。只有Array()函數符合類型庫名稱,例如VBA.Array()然後Option Base不影響Array()函數返回的數組的下界。

要創建二維數組,只需指定維數,例如這樣

Dim multiA(1 To 2, 1 To 2) As String 

或使用ReDim這樣

Dim multiA As Variant 
ReDim multiA(1 To 2, 1 To 2) 
2

您可以創建使用Array()函數的語法數組的數組:

x = Array(Array(0, 1, 2, 3, 4), Array(100, 101), Array(200, 201, 202)) 
    debug.print x(2)(1) 
    201 

這實際上不是一個兩維陣列。這種技術在其他語言中使用很多。

+0

湯姆,這是最好的答案。我試圖做到這一點(它不會出現在我的日常工作中,所以沒有記住它),但不知何故弄糟了語法。 – 2014-12-14 02:06:58