はじめに
ワークシートを追加(挿入)したい場合は、Worksheetsコレクションの Add メソッドを使用します。
ワークシートをコピーして追加したい場合は、以下のページを参照してください。
・ワークシートのコピー
Add メソッドの構文は以下のようになっています。
Worksheets.Add ( Before, After, Count, Type)
それぞれの引数は以下の通りです。
引数 | 説 明 |
---|---|
Before | 指定したシートの前方に追加 |
After | 指定したシートの後方に追加 |
Count | 追加するシート数 |
Type | 追加するシートのタイプ |
Before と After はどちらかを指定します。Type はグラフシートなどを指定できます。全ての引数は省略可能です。
尚、シートを追加した直後は、追加したシートがアクティブシートになります。
ワークシートの追加
引数を指定しないで追加する場合、現在アクティブなシートの前に追加されます。
Sub macro1()
Worksheets.Add
End Sub
Sheet1だけの状態で上のコードを実行すると以下のようになります。

追加されたシート(Sheet2)はアクティブになります。
あるシートの後ろに追加する
上記の状態で、Sheet2の後ろにシートを追加したい場合は、次のようにAfterで指定します。
Sub macro2()
Worksheets.Add after:=Worksheets("Sheet2")
End Sub

ワークシート(Sheet2)を指定して、その後ろに新しいシートが追加されました。ワークシートは、Worksheets(1) のように数値で指定しても構いません。
最後にシートを追加する
一番最後にワークシートを追加したい場合は、After と Worksheets.Count を使って追加します。
Sub macro3()
Worksheets.Add after:=Worksheets(Worksheets.Count)
End Sub

ワークシートを追加して名前を付ける
ワークシートを追加した直後は、追加したワークシートがアクティブになっていますので、アクティブシートのNameプロパティに名前を設定すれば良いでしょう。
Sub macro4()
Worksheets.Add before:=Worksheets(1)
ActiveSheet.Name = "data"
End Sub
このコードでは、先頭にシートを追加して、シート名を data としています。

ワークシートの変数を用意して、追加したシートを代入して名前を付ける方法もあります。
Sub macro5()
Dim sh As Worksheet
Set sh = Worksheets.Add(before:=Worksheets(1))
sh.Name = "data"
End Sub
Worksheets.Addの引数の指定は、括弧書きになる点に注意してください。これは、変数に値を代入するためです。また、Worksheet変数(オブジェクト)への代入は、Set が必要になりますのでこの点にも注意しましょう。