• ベストアンサー

excelのマクロ?範囲行をコピーしたいのです。

どなたか教えて下さい。 行1から行20までをコピーをして、それを「コピーしたセルの挿入」でN回実行させたいのですが、FOR命令文だけでは巧く出来ません。 ------------------------------------------------------------ ・コピー元の、行1から行20は固定で使用します。 ・セルの挿入先は  N=1のとき・・・21行目に挿入します。  N=2のとき・・・41行目に挿入します。  (挿入先は、N*20+1 でいいようなきがしますが)

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

  • ベストアンサー
  • pauNed
  • ベストアンサー率74% (129/173)
回答No.1

こんにちは。 >「コピーしたセルの挿入」でN回実行させたい であれば Dim N As Long N = 2 With Rows("1:20") .Copy .Offset(20).Resize(20 * N).Insert End With Application.CutCopyMode = False …な感じですが、 >N=1のとき・・・21行目に挿入します。 >N=2のとき・・・41行目に挿入します。 からすると、挿入先が変動で、1回だけ・・・というような印象を受けます。 それだと Dim N As Long N = 2 With Rows("1:20") .Copy .Offset(N * 20).Insert End With Application.CutCopyMode = False ですか。いずれにしてもFor...Next構文は不要のようです。

syosin-oyaji
質問者

お礼

pauNed様、どうもありがとうございました。 ご教授頂いた内容、上段のご回答で希望通りの事が出来ました。 ----------------------------------------------------- FOR文を使ったり、変数を使ったりしないとダメ?と 思っていましたのですごく勉強になりました。 今後ともよろしくお願いいたします。

その他の回答 (2)

  • taocat
  • ベストアンサー率61% (191/310)
回答No.3

こんばんは。 たぶん、Copyメソッドを1回実行して、 「コピーしたセルの挿入」をN回実行しているのでしょう。 「コピーしたセルの挿入」は普通の貼り付けと違って その度にCopyメソッドを実行しなければいけません。 ----------------------------------------------- Sub test()  Dim N As Long  For N = 1 To 2    Rows("1:20").Copy    Rows(N * 20 + 1).Insert Shift:=xlDown  Next  Application.CutCopyMode = False End Sub --------------------------------------------- 以上です。

syosin-oyaji
質問者

お礼

taocat様、ご回答ありがとうございました。 私の拙い質問をよく理解して下さってありがとうございます。 taocat様の回答内容が、私が一番想像(求めていた)していた内容に 近かったです。しかし、ANo.1の方の回答で解決してしまいました。 でも、個人的にはわかり易くていいです!

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

質問の意味を理解できないので、例を挙げてみます。 1-20行を、簡単のため1-3行(Aれつだけ)の例にします。 A1:A3をa,b,c, A4をXXXXとします。 Sub Macro1() n = 3 For i = 1 To n Range("A1:A3").Select Selection.Copy Worksheets("Sheet1").Cells(i * 3 + 1, "A").Select Selection.Insert Shift:=xlDown Next i End Sub を実行すると、A1:A13が a b c a b c a b c a b c XXXXXX となりました。 これではどこが不適当ですか。

syosin-oyaji
質問者

お礼

早速の回答、ありがとうございました。 私の質問が具体性に欠けていました。 思い違いさせてしまって済みませんでした。 ---------------------------------------------- 1行目から20行目までは、A4の専用伝票として設計してあります。 質問文の”N回”とはページ数を意味していまして、指定したページ数だけコピーしたいと言う事でした。 専用伝票は、各行の行の高さが違うので行毎そっくりコピーしたかった 訳です。 imogasi様の回答はサンプルとして使用させて頂きます。

関連するQ&A