2014-01-28 150 views
0

上VBAVBA陣列得到尺寸

一個問題,如果我聲明等

Dim myArray() as string

數組變量i如何可以填充該陣列爲二維時

myArray = Array(arglist)

只接受逗號分隔的參數列表,參數表示一個維度?

感謝

回答

3

你可以使用下面的代碼:

Dim myArray As Variant 

myArray = Array(Array("a", "b"), Array("c", "d")) 

注意,既然Array回報Variantlink),你應該聲明的變量myArrayVariant

+0

是的,但是陣列可以採取字符串數據。 Dim myArray()as String myArray = Array(「t1」,「t2」)你能否友好地解釋我,因爲你的回答給我一個問題:P – ExoticBirdsMerchant

+1

是的,'Array'可以帶'String'數據,但不能只有'字符串'。它可以採用任何其他數據類型。你可以編寫例如'myArray = Array(「t1」,123)'數組將包含'String'和'Integer'。由於數組可以包含任何數據,因此它會返回「Variant」 - 一種特殊的數據類型,可以包含任何類型的數據(請參見[link here](http://msdn.microsoft.com/zh-cn/library/office/ gg251448.aspx))。由於'Array'返回'Variant',你必須聲明'Dim myArray As Variant' –

+1

你是我的朋友!!!!感謝十億如果我能推動一些東西給你聲望,請告訴:P – ExoticBirdsMerchant

1

你可以定義數組與使用Array()函數不同。從微軟的this開始工作,您可以執行以下操作。

Dim myArray(5,5) as String 
'If you wanted to loop this for example, you could use UBound, as seen in this 
'http://msdn.microsoft.com/en-us/library/95b8f22f%28v=vs.90%29.aspx 
Dim x as Integer, y as Integer 
For x = 1 to UBound(myArray,1) 
    For y = 1 To UBound(myArray,2) 
      myArray(x,y) = "foo" + CStr(x) + CStr(y) 
    Next y 
Next x 

否則你的東西通常定義它像simoco提到

Dim myArray(2,2) as String 
myArray(1,1) = "a" 
myArray(1,2) = "b" 
myArray(2,1) = "c" 
myArray(2,2) = "d"