2016-10-22 87 views
1

我試着在VBA代碼中創建一個有2行和5列的數組。可能嗎?我寫了這樣帶宏的矩形陣列

小組循環賽()

Cells.Select     'this codes clears previous entries 
Range("T17").Activate 
Selection.ClearContents 
Range("E4").Select 

Dim myArray(1, 4) As Double 
Dim a As Double, b As Double 
Dim i As Integer 
Dim j As Integer 
Dim c As Double 
c = 1 

For a = 0 To UBound(myArray()) 
    For b = 0 To UBound(myArray()) 
     myArray(a, b) = c 
     ThisWorkbook.Sheets("Sheet1").Cells(a + 1, b + 1).Value = myArray(a, b) 

     c = c + 1 
    Next b 

Next a 

末次

但它與兩行兩列。該怎麼辦?

+0

vba 2d不工作完全像其他語言。請注意,您應該以這種方式獲得數組:http://www.mrexcel.com/forum/excel-questions/245779-ubound-multi-dimensional-arrays.html – Asaf

回答

0

默認情況下,UBound將返回數組第一維的最高索引。您需要將可選參數設置爲2以獲取第二維的最後一個索引。

For b = 0 To UBound(myArray(), 2) 
0
Sub batman() 
    [Sheet1!A1:E2] = [{1,2,3,4,5;6,7,8,9,10}] 
End Sub 

Sub robin() 
    Dim myArray(1 To 2, 1 To 5) As Double, c As Long 

    For c = 1 To 5 
     myArray(1, c) = c 
     myArray(2, c) = c + 5 
    Next 

    [Sheet1!A1:E2] = myArray 
End Sub 
0

感謝所有的你的時間。我已經想通了我的方式來獲得我正在尋找的東西。我改寫這樣的代碼:

小組循環賽()

Cells.Select     'this codes clears previous entries 
Range("T17").Activate 
Selection.ClearContents 
Range("E4").Select 

Dim myArray(1, 5) As Double 
Dim a As Double, b As Double 
Dim i As Integer 
Dim j As Integer 
Dim c As Double 
c = 1 

For a = LBound(myArray, 1) To UBound(myArray, 1) 
    For b = LBound(myArray, 2) To UBound(myArray, 2) 
     myArray(a, b) = c 
     ThisWorkbook.Sheets("Sheet1").Cells(a + 1, b + 1).Value = myArray(a, b) 

     c = c + 1 
    Next b 


Next a 

末次

這爲我工作完美。再次感謝。