- ベストアンサー
EXcel VBAのFor~Nextステートメントで質問です
初歩の初歩ですがお願いします。 3から13行目をデータのある最終行の下に 20回コピーをしていきたいのですが、 (3から13行のデータの複製を20個用意 したいということです) つまずいています。iとしてみたのですが 、何をiとして実行させるのか分かりません。 教えていただけないでしょうか? Sub test() Dim i As Integer For i = ● To ● Rows("3:13").Copy Worksheets("Sheet1").Range("A65536") _ .End(xlUp).Offset(1).Select ActiveSheet.Paste Application.CutCopyMode = False Next i End Sub
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
修正版 Sub test() Dim i As Integer Dim n As Integer Dim RangeSrc As Range Dim RangeDst As Range Set RangeSrc = Worksheets("Sheet1").Rows("3:13") n = Cells(65536, 1).End(xlUp).Row If n <= 13 Then n = 14 For i = 1 To 20 Set RangeDst = Worksheets("Sheet1").Rows(n + 1 + (i - 1) * 11) RangeSrc.Copy Destination:=RangeDst Next i Set RangeSrc = Nothing Set RangeDst = Nothing End Sub
その他の回答 (3)
- zap35
- ベストアンサー率44% (1383/3079)
直接の回答ではありませんが、For文による繰り返しを使用しなくても20回分の貼り付けは可能です Sub Macro() Rows("3:13").Copy Worksheets("Sheet1").Range("A65536").End(xlUp) _ .Offset(1).Resize(220, 1).Select ActiveSheet.Paste Application.CutCopyMode = False End Sub ただしこのマクロではA列の最終行が13行目よりも小さいときはエラーが起こります。汎用的に使用するマクロでしたら、一旦最終行を取得してチェックする方が良いかもしれません
Sub test() Dim i As Integer Dim RangeSrc As Range Dim RangeDst As Range Set RangeSrc = Worksheets("Sheet1").Rows("3:13") For i = 1 To 20 Set RangeDst = Worksheets("Sheet1").Rows(14 + (i - 1) * 11) RangeSrc.Copy Destination:=RangeDst Next i Set RangeSrc = Nothing Set RangeDst = Nothing End Sub
お礼
ありがとうございました。これを覚えさせていただきます。
20回コピーするということなので For i = 1 To 20 となります。
お礼
ありがとうございました。参考になりました。