エクセルVBAでシートを追加挿入するにはAddメソッドを使用します。
VBAではシートの追加はよく使います。挿入場所、挿入枚数、名前の付け方など覚えておくと便利です。
こんにちは、じゅんぱ店長(@junpa33)です。
今回は、エクセルでワークシートの枚数を増やしたい場合にどのようにすればよいかを説明します。
VBAコード的には、1・2行のコードですので簡単に覚えられると思います。
また同時に、挿入位置の指定方法やシート名付けの記述方法も覚えておきましょう。
コンテンツ
シートの追加・挿入にはAddメソッドを使う

エクセルの初期設定はシート1枚だけが表示されるようになっています。
エクセルの作業で明らかにシート数が単に不足している場合は、まず初期設定を変更することをおすすめします。

ここでのVBAによるシート追加は、「〇〇用のシートを追加挿入する」という目的ありきの場合を前提にしています。
その都度シートを単に追加したのであればショートカット「Alt」+「I」+「W」を使うと即OKです。
シートの追加を「マクロの記録」でコード化
分かりやすいように、マクロの記録を使ってVBAコードを記述してみます。

「Sheet1」を表示した状態でシート選択タブの右にある「+」ボタンをクリックしました。
「Sheet1」の右隣に「Sheet4」が追加されました。

Sub Macro9()
'
' Macro9 Macro
'
'
Sheets.Add After:=ActiveSheet
End Sub
シートの追加挿入で記述する必要最低限のVBAコードは、1行だけの数文字ということです。
- 「Sheets」はこのままでも「Worksheets」と表示してもOKです。
- 「Add」は追加挿入のためのメソッド(指令のようなもの)になります。
- 「After:=ActiveSheet」は、「Sheet1」を表示状態で追加挿入の操作をしたので、「ActiveSheet」=「Sheet1」としてその後にシートが挿入されました。
Addメソッドの構文
Addメソッドの記述方法を整理しておきます。
Worksheets.Add ( Before, After, Count, Type )
引数・・Before, After, Count, Type・・の解説
Before・・・指定したシートの前
After・・・・指定したシートの後
<BeforeとAfterともに省略した場合はActiveSheetの直前に挿入されます。>
Count・・・追加するシートの枚数を指定することが出来ます。
<省略した場合は1枚を追加します。>
Type・・・・殆ど使用しないので、無視してもOKです。
Addメソッドを使って実際にVBA記述してみる
一番ありそうなサンプルとして、
エクセルで作成されたテンプレート1枚だけのエクセルファイルで、
このテンプレートを新しいシートに丸々コピペするために、VBAを使ってシートを増やしたい場合の想定です。

Sub シート追加1()
Worksheets.Add after:=Worksheets("テンプレート")
End Sub

Sub シート追加2()
Worksheets.Add after:=Worksheets("テンプレート"), Count:=3
End Sub

Sub シート追加3()
Worksheets.Add(before:=Worksheets("Sheet2")).Name = "東京"
End Sub

このVBAコードでもシート名を変更することが出来ます。
Sub シート追加3()
Worksheets.Add before:=Worksheets("Sheet2")
ActiveSheet.Name = "東京"
End Sub
名前を付けるのはNameプロパティを使用します。
シートを追加したその時は、追加されたそのシートがActiveSheetになっていますので、直ちにNameプロパティで名前を付けることが出来ます。
次の操作でフォーカスが失われたらこの操作は出来ません。
シートの追加挿入のまとめ

シートの追加や挿入は、エクセルVBAでプログラムを作成して行く上では非常に頻繁に出てきます。
難易度は高くありませんので、シートの操作の一つとしてサクッとこなしていきましょう。
密接に関連した項目として(シートの)名前付けがありますので合わせて知っておくと良いでしょう。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

今回の記事はここまでです。 最後までご覧いただき有難うございました。