可変の表をコピーして既存のデータの続きにはりつけるマクロ

データが何行だろうと、下までコピーする

記録のマクロで可変の表をコピーするコードを作成し、多少変更を加えて、 表の途中から貼り付けることができるマクロも作成することにします。

それでは、マクロの中身を見てみましょう。
Sub harituke()
    Range("A1:G1").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("Sheet2").Select
    Range("A1").Select
    ActiveSheet.Paste
End Sub
Range(Selection, Selection.End(xlDown)).Selecの部分が ショートカットキーのCtrl+Shift+↓で下まで選択したコードになります。 これで、データが何行だろうと、下まで選択することができます。
ただ、そのまま貼り付けたので、列幅が足りない列がありました。そこで、 このコードに、列幅を自動調整するように、AutoFitメソッドを使った以下の1行を加えます。
Columns("A:G").EntireColumn.AutoFit
コードは以下のようになります。
Sub harituke()
    Range("A1:G1").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("Sheet2").Select
    Range("A1").Select
    ActiveSheet.Paste
    Columns("A:G").EntireColumn.AutoFit
End Sub
では、1行コードを追加したマクロを実行してください。 列幅が調整されて、コピーされた表がすっきりおさまりました。

表の途中から貼り付けるには

データは、1回貼り付けて終わりということはなく、追加のデータだけを貼り付けるケースが良くあります。 以下の図では、1月17日までのデータがまとめの表に入力してあり、表の続きに日々のデータをコピーして貼り付けるなどという場合に使いたいマクロです。

こんどは、表の途中から追加データを貼り付けることができるようにしましょう。 前述のharitukeマクロの後半の部分が、Sheet2を選択して貼り付けるコードなので、それを変更すればいいんです。
Sheet2で、A1セルを選択して、現在のデータが入力されている最終行を選択するコードはといえば、 記録のマクロをやれば、次のように記録されます。
Sub test()
    Range("A1").Select
    Range(Selection, Selection.End(xlDown)).Select
End Sub
貼り付けるのは、選択した1行下を選択するには、Offsetプロパティを使って、 Offset(行, 列)を指定すると、 次のように書き換えることができます。
Sub test()
    Range("A1").Select
    Selection.End(xlDown).Offset(1, 0).Select
End Sub
では、元のコードを今変更した部分と入れ替えてみます。
Sub harituke()
    Range("A1:G1").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("Sheet2").Select
    Range("A1").Select
    Selection.End(xlDown).Offset(1, 0).Select
    ActiveSheet.Paste
    Columns("A:G").EntireColumn.AutoFit
End Sub
このようなコードに変更することで、データが入力された最終行の続きに新たなデータをはりつけることができます。
スポンサーリンク
スポンサーリンク