Excel VBA の入門ということで
今回はシートをコピーする方法を説明しますね。
私も独学でVBAを勉強しつつ、業務で使いだして数年以上になりますが
未だにコードはコピペすることが多いですね。
ガチガチのプログラマーということでもないし
IT系の会社でもないので、全然気にしてません。
とりあえず、動かないことには始まらないからね!
結果的にちゃんと動けば良いと思うので
とりあえずは、サイトを開きながら使うものをコピペしていきましょう!
VBAでシートをコピーする方法
以下に、シートをコピーする方法をいくつか紹介します。
シートを指定シートの後ろにコピーする
シートをコピーするには、WorksheetsコレクションのCopyメソッドを使います。
以下は、Sheet1という名前のシートをコピーして
Sheet2という名前のシートの後ろに貼り付けます。
Worksheets("Sheet1").Copy After:=Worksheets("Sheet2")
シートを指定シートの前にコピーする
以下は、Sheet1という名前のシートをコピーして
Sheet2という名前のシートの前に貼り付けます。
Worksheets("Sheet1").Copy Before:=Worksheets("Sheet2")
シート数を指定してコピーする
以下は、Sheet1という名前のシートをコピーして
前から3枚目のシートの後ろに貼り付けます。
Worksheets("Sheet1").Copy After:=Worksheets(3)
シートを新しいブックにコピーする
シートを新しいブックにコピーするには、WorkbookオブジェクトのAddメソッドを使います。
以下は、Sheet1という名前のシートを新しいブックにコピーします。
Worksheets("Sheet1").Copy
Workbooks.Add
ActiveSheet.Paste
複数のシートをコピーする
複数のシートをコピーするには、WorksheetsコレクションのCopyメソッドを使います。
以下は、Sheet1とSheet2という名前のシートをコピーして、
Sheet3という名名前のシートの後ろに貼り付けます。
Worksheets(Array("Sheet1", "Sheet2")).Copy After:=Worksheets("Sheet3")
まとめ
シートのコピーも割と使うことが多いです。
ポイントは、コピー先のシートの前に入れるのか、後ろに入れるのか。
Before か After か、どちらを使えば良いのか。
このあたりを覚えておけば良いんじゃないかと思います。
以下に上記で紹介したコードをまとめておきます。
コピペで使用する際などに活用下さいませ。
Worksheets("Sheet1").Copy After:=Worksheets("Sheet2")
Worksheets("Sheet1").Copy Before:=Worksheets("Sheet2")
Worksheets("Sheet1").Copy After:=Worksheets(3)
Worksheets("Sheet1").Copy
Workbooks.Add
ActiveSheet.Paste
Worksheets(Array("Sheet1", "Sheet2")).Copy After:=Worksheets("Sheet3")
関連するメソッド
関連するメソッドも覚えておくと便利ですよ。