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

End Subの

のように書いた。しかし、それは2行2列が付属しています。何をすべきか?

+0

vba 2dは他の言語とまったく同じように動作しません。次のようにして配列lenthsを取得してください:http://www.mrexcel.com/forum/excel-questions/245779-ubound-multi-dimensional-arrays.html – Asaf

答えて

0

デフォルトでは、UBoundは配列の最初の次元の最も高いインデックスを返します。 2番目の次元の最後のインデックスを取得するには、オプションのパラメータを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 

End Subの

をそして、それは私のために完璧に働きました。再度、感謝します。

関連する問題