ExcelのVBAの配列に関する質問です。
ExcelのVBAの配列に関する質問です。
sheet1のデータをsheet2に表示するVBAを作成しています。。
sheet1のデータは7行目からスタートし、sheet2のデータは26行目からスタートしています。。
sheet1とsheet2の列は同じ並びではないため、それぞれのシートの列番号をCellsを用いて指定しています。
Sub test1()
Dim endrow As Long
endrow = Worksheets("sheet1").Range("A65536").End(xlUp).Row
Dim i As Long
Dim j As Long
For i = 7 To endrow
j = i + 19
Worksheets("sheet2").Cells(j, 1) = Worksheets("sheet1").Cells(i, 2)
Worksheets("sheet2").Cells(j, 8) = Worksheets("sheet1").Cells(i, 28)
Worksheets("sheet2").Cells(j, 9) = Worksheets("sheet1").Cells(i, 31)
Worksheets("sheet2").Cells(j, 10) = Worksheets("sheet1").Cells(i, 32)
・
・
・ ※長いので省略
Next i
End Sub
上記のtest1は正常に動くのですが、データ量が多いため、処理に時間がかかってしまいます。
高速化できないかと、以下のように変更しました。
Sub test2()
Dim dataRange1 As Variant
Dim dataRange2 As Variant
dataRange1 = Worksheets("sheet1").Range("A1:GI10006")
dataRange2 = Worksheets("sheet2").Range("A1:DZ10018")
Dim endrow As Long
endrow = Worksheets("sheet1").Range("A65536").End(xlUp).Row
Dim i As Long
Dim j As Long
For i = 7 To endrow
j = i + 19
dataRange2(j, 1) = dataRange1(i, 2)
dataRange2(j, 8) = dataRange1(i, 28)
dataRange2(j, 9) = dataRange1(i, 31)
dataRange2(j, 10) = dataRange1(i, 32)
・
・
・ ※長いので省略
Next i
End Sub
test2は、エラーメッセージ等は表示されませんが、sheet2にデータが表示されません。
ちなみに、以下のようにsheet1のみ配列化した場合は、正常に表示されました。
Worksheets("sheet2").Cells(j, 1) = dataRange1(i, 2)
Worksheets("sheet2").Cells(j, 8) = dataRange1(i, 28)
Worksheets("sheet2").Cells(j, 9) = dataRange1(i, 31)
Worksheets("sheet2").Cells(j, 10) = dataRange1(i, 32)
test2は、どこが間違っているのでしょうか?
ご教示ください。
よろしくお願いいたします。
お礼
回答ありがとうございます! エラーを回避する方法がありましたか^^ if文で回避するとかしか考えてませんでした; とても勉強になりました! ありがとうございました!