アクティブセルのある表を列幅も含めて新規シートにコピーする~Excel 2013 マクロ講座

マクロで列幅も含めて新規シートにコピー

マクロ講座49回 
列幅も含めて新規シートにコピー

Excel 2013 マクロ講座 49回前半

列幅も含めて新規シートにコピー

今回は、テンプレート用のワークシートに、複数の表のひな形があり、それらを用途に応じてコピーするというケースです。
はじめに、アクティブセルのある表だけを新規シートにコピーするマクロを、 次に、アクティブセルのある表を列幅も含めて新規シートにコピーするマクロを作ります。

(サンプルファイルは、こちらから 2013マクロ講座49回サンプルデータ

アクティブセルのある範囲は、CurrentRegionで

アクティブセルのある範囲は、CurrentRegionプロパティで取得できます。
アクティブセル領域とは、空白の行及び列で構成される範囲です。
CurrentRegionプロパティを使うと、アクティブセルの周囲にある表やデータの範囲を取得できます。
ワークシートに、複数の表のひな形があり、そのどちらかをコピーしたいときなどに使うことができます。たとえば、
    ActiveCell.CurrentRegion.Copy
    
とか、
    ActiveCell.CurrentRegion.Select
    
などのようにです。

Worksheets.Add メソッド

ワークシートを追加するには、Worksheets.Add メソッドを使います。
新しいワークシート、グラフ シート、またはマクロ シートを作成します。この時新しいワークシートがアクティブ シートになります。

では、コードを組み立てましょう。
1.アクティブセルのある領域を取得しコピーする
ActiveCell.CurrentRegion.Copy
    
2.アクティブシートの前に新規シートを追加する
    Worksheets.Add Before:=ActiveSheet
    
3.追加した新規シートがアクティブシートになるので、アクティブシートに貼り付ける
    ActiveSheet.Paste
    
4.以上で貼り付け完了ですが、月を入力することを考慮してセルE1を選択します。
    Range("E1").Select
    
まとめると、
Sub セルのある表だけを新規シートにコピー()
    ActiveCell.CurrentRegion.Copy
    Worksheets.Add Before:=ActiveSheet
    ActiveSheet.Paste
    Range("E1").Select
End Sub
    
マクロを実行したところです。貼り付け先を指定していないので、新規シートのA1に貼り付けられました。