【ExcelVBA】新しいシートを挿入する Addメソッド

こんなあなたにおすすめ

・Excel VBAで新しいシートを挿入したい

Excel VBAで新しいシートを挿入したいということが多いと思います。

新しいシートを挿入するときにシート名を指定したり、アクティブシートの操作をしたいなどあると思います。
今回は、上記の内容について解説します。

Excel VBAで新しいシートを挿入したい

Addメソッドの基本構文は下記の通りです。
Worksheets.Add(Before, After, Count)

指定したシートの前にシートを挿入したい場合は、Before、
指定したシートの後ろにシートを挿入したい場合は、Afterを使います。

Before、Afterは省略可能です。
省略した場合、アクティブシートの前に新しいシートを挿入します。

複数のシートを挿入したい場合は、Countを指定しましょう。

新しいシートを挿入する

Worksheets.Addでシートを追加できます。

Before、Afterを省略しているため、アクティブシート(Sheet1)の前にシート(Sheet2)が挿入されています。

Sub test1()

    Worksheets.Add    '新しいシートを挿入する

End Sub

【実行前】

【実行後】

指定したシートの前に挿入する

Beforeにシートを指定することで、指定したシート(Sheet1)の前にシート(Sheet3)が挿入されています。

Sub test2()

    Worksheets.Add Before:=Worksheets("Sheet1")    'Sheet1の前にシートを挿入する

End Sub

【実行前】

【実行後】

指定したシートの後ろに挿入する

Afterにシートを指定することで、指定したシート(Sheet1)の後ろにシート(Sheet3)が挿入されています。

Sub test3()

    Worksheets.Add After:=Worksheets("Sheet1")    'Sheet1の後ろにシートを挿入する

End Sub

【実行前】

【実行後】

先頭にシートを挿入する

引数のBeforeに1番目のシートを指定することで、先頭の位置にシートを追加することができます。

Sub test4()

    Worksheets.Add Before:=Worksheets(1)    '先頭にシートを挿入する
    
End Sub

【実行前】

【実行後】

最後尾にシートを挿入する

Worksheets.Countで最後尾シートのインデックス番号を取得することができます。
取得したインデックス番号をAfterの引数に指定することによって最後尾にシートを挿入できます。

Sub test5()

     Worksheets.Add after:=Worksheets(Worksheets.Count)    '最後尾にシートを挿入する

End Sub

【実行前】

【実行後】

シート名を指定 または 変更する

.Nameでシート名を変更することができます。

アクティブシートのシート名を変更する

Sub test6()

    Worksheets.Add    '新しいシートを挿入する
    ActiveSheet.Name = "新しいシート"    'シート名を変更する

End Sub

【実行前】

【実行後】

Worksheetオブジェクトを使ってシート名を変更する

Addメソッドは新しいシートを挿入したときに挿入したシートを返します。
そのシートの名前を取得することでシート名を変更することができます。

Sub test7()

    Dim sheet As Worksheet    'Worksheetオブジェクトを定義する
    Set sheet = Worksheets.Add()    '新しいシートを挿入する

  sheet.Name = "新しいシート"   'シート名を変更する

End Sub

【実行前】

【実行後】

シート名を指定して挿入する

Sub test8()

    Worksheets.Add.Name = "新しいシート"    'シート名を指定して挿入する

End Sub

【実行前】

【実行後】

指定した位置にシート名を指定して挿入する

Sub test9()

    Worksheets.Add(After:=Worksheets("Sheet1")).Name = "新しいシート"    'Sheet1の後ろにシート名を指定して挿入する

End Sub

【実行前】

【実行後】

既存のシートをアクティブのままにする

デフォルトの設定では、シートを挿入したときに、新しいシートがアクティブシートになります。

既存のシートをアクティブのままにしたい場合は、現在のアクティブシートを記憶しておき、シートを挿入した後に、アクティブにすることでアクティブシートをそのままにすることができます。

Sub test10()

    Dim sheet As Worksheet    'Worksheetオブジェクトを定義する
    Set sheet = ActiveSheet    'アクティブシートを記憶する
    Worksheets.Add.Name = "新しいシート"    '新しいシートを挿入する
    sheet.Activate    'シート挿入前のアクティブシートをアクティブにする

End Sub

【実行前】

【実行後】

複数シートを挿入する

Sub test11()

    Worksheets.Add After:=Worksheets("Sheet1"), Count:=2    'シートを2枚追加する

End Sub

複数シートを挿入したい場合、For文でも可能です。

Sub test12()

    Dim i As Long

    For i = 1 To 5

        Worksheets.Add After:=Worksheets(Worksheets.Count)    '最後尾にシートを挿入する
        ActiveSheet.Name = i    'シート名を変更する

    Next

End Sub

【実行前】

【実行後】

For文については、下記の記事で解説していますので、ご参照ください。
>>【ExcelVBA】For Next文 繰り返し(ループ)処理

まとめ

ここまでシートを挿入する方法について解説しました。

addメソッドを使うことで、簡単にシートを挿入することができます。

シートを挿入するにも挿入位置、シート数、シート名などいろいろ設定できるので、試してみてください。

For文については、下記の記事で解説していますので、ご参照ください。
>>【ExcelVBA】For Next文 繰り返し(ループ)処理

Excelで作業効率をアップしたい方は、下記の記事もご参照ください。
>>Excelのショートカット一覧 覚えて作業効率アップ!!
>>Excelで覚えておくべき関数 作業効率アップ間違いなし

【Excelについて学びたい方】
Excel 最強の教科書[完全版]
【Excel VBAについて学びたい方】
Excel VBA 脱初心者のための集中講座
エンジニアを目指すなら、TechAcademy!
オンラインスクール受講者数No.1!

・自宅にいながらオンライン完結で勉強できる
➡スクールへの移動時間を削減するため、効率的に学習可能!

・受講生に1人ずつ現役のプロのパーソナルメンターがつく
➡分からないことがわかるまで徹底的にメンターに質問可能!

・チャットで質問すればすぐに回答が返ってくる
➡レスポンスが速いから、わからないことをその場で解決!

・オリジナルサービスやオリジナルアプリなどの開発までサポート
➡就職、転職のときに役立つポートフォリオを開発可能!

無料で体験できるので、まずはお試し
>>TechAcademyの無料体験はこちら

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です