• ベストアンサー

現在のシートのデータをコピーして新シートに貼り付けるコードが知りたいです。

現在のシートのデータをコピーして新シートに貼り付けるコードが知りたいです。 行数が毎回増減するのですが コントロール+A、コピー、新シート挿入、貼付け をマクロ化したいです。 これをそのまま記録したら コントロール+Aの時点で Range("A1:F200").Select Selection.Copy Sheets.Add ActiveSheet.Paste と現在は200行のため200になってしまいます。 やりたいことは「200」ではなく「最後のセル」を知るコードが知りたいです。 Range("A1:??").Select ?には何を入れればいいのでしょうか? よろしくお願い致します。

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

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

エクセルの操作として、お勧めできないコピーをしてます。 (シートタブで右クリックー移動またはコピーーコピーを作成するーOKがお勧めということ) 質問者の路線でやると Sub test02() d = Range("A65536").End(xlUp).Row MsgBox d Range("A1:F" & d).Copy Sheets.Add.Paste End Sub ーー d = Range("A65536").End(xlUp).Row の &の部分 Sheets.Add.Pasteの.Pasteの部分 Selectionの省略(早く脱却のこと) あたりが勉強になるでしょう。 MsgBox dは確認後は抹消のこと d = Range("A65536").End(xlUp).Rowのことは回答を見ていれば毎日のように出てくる。先ほども別質問で使った。

noname#150498
質問者

お礼

大変参考になりました。ご回答ありがとうございます。

その他の回答 (3)

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.3

挿入したシートにコピーしているわけですから、 #1さんの回答1にあるようにシート毎コピーすれば 最終行云々は関係ありませんね。 ●最終シートの次にシートを追加してSheet1そのものをコピー   Sheets("Sheet1").Copy After:=Sheets(Sheets.Count) ●アクティブシートを同じくコピー   ActiveSheet.Copy After:=Sheets(Sheets.Count) 試してみれば分かると思いますが、 シート名.Copy の一行で、 シートのコピー、シートの追加、貼り付けの3つの動作をします。  

noname#150498
質問者

お礼

大変参考になりました。ご回答ありがとうございます。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

A列かF列で最終行を取得してみる。 Selectは省く。 Range("A1:F" & Cells(Rows.Count,"F").End(xlUp).Row).Copy

noname#150498
質問者

お礼

大変参考になりました。ご回答ありがとうございます。

回答No.1

現在のシートの内容を全て新しいシートに貼り付ける場合、  1.データをcopyするのではなく、シートをcopyする。  2.Range("A1:F200").Select 部分をCells.Selectに変更する。 単純に上記のどちらかで、出来ると思います。 ちなみに、Ctrl+A で、Range("A1:F200").Selectには、ならなかったです。

noname#150498
質問者

お礼

量が多い時にシートをコピーすると重すぎて動きが遅くなりました。 大変参考になりました。ご回答ありがとうございます。