• ベストアンサー

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

質問者が選んだベストアンサー

  • ベストアンサー
noname#74310
noname#74310
回答No.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)
回答No.3

直接の回答ではありませんが、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行目よりも小さいときはエラーが起こります。汎用的に使用するマクロでしたら、一旦最終行を取得してチェックする方が良いかもしれません

newme
質問者

お礼

ありがとうございました。参考になりました。

noname#74310
noname#74310
回答No.2

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

newme
質問者

お礼

ありがとうございました。これを覚えさせていただきます。

noname#65286
noname#65286
回答No.1

20回コピーするということなので For i = 1 To 20 となります。