2016-10-22 75 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 

末次

这为我工作完美。再次感谢。