【VBA】ワークシートを追加する

エクセルVBAで使用するコードの備忘録。VBAでワークシートを追加するコード。全シートの一番最後に追加する場合についてもご紹介。ワークシートを削除する場合のコードについてはこちらをご参照ください。

スポンサーリンク

Worksheets.Addメソッド

ワークシートを追加するには「Workbook」オブジェクト下の「Worksheets」オブジェクトに対してAddメソッドを使用します。

Call ThisWorkbook.Worksheets.Add

Addメソッドには引数を指定することができますが、どれも任意です。

引数名タイプ説明
BeforeVariant指定シートの直前に追加する
AfterVariant指定シートの直後に追加する
CountVariant追加するシートの枚数
TypeVariant追加するシートのタイプ

使用する頻度が高いのはBefore、After、Countです。あまりないかもしれませんが、BeforeとAfterに矛盾するような条件を指定するとエラーになります。

ちなみに戻り値として追加したワークシートオブジェクトが返されます。複数のワークシートを追加下場合は一番最後に追加されたワークシートが返されます。

サンプルコード

いくつかサンプルコードをご紹介したいと思います。まず一つ目は、指定したシートの直前(Before)にシートを追加します。一応変数としてCountを入れたコードをご紹介していますが、追加枚数が1枚の場合は省略可能です。

なお、コードを使用する際はカッコに囲まれた部分([***])を自分のプログラムに合わせて変更してください。

指定シートの直前に新規シートを追加する

Public Sub AddWorksheet1()
    
    '--- 追加位置のワークシート ---'
    Dim wsBefore As Worksheet
    Set wsBefore = ThisWorkbook.Worksheets("[シート名]")
    
    '--- 追加したワークシートを格納する変数 ---'
    Dim wsTmp As Worksheet
    Set wsTmp = ThisWorkbook.Worksheets.Add(Before:=wsBefore, Count:=[追加枚数])
    
End Sub

全シートの一番初めに新規シートを追加する

次は全シートの一番初めにワークシートを追加する場合です。この場合は挿入位置を指定する必要はありません。

Public Sub AddWorksheet2()
    
    '--- 追加したワークシートを格納する変数 ---'
    Dim wsTmp As Worksheet
    Set wsTmp = ThisWorkbook.Worksheets.Add(Count:=[追加枚数])
    
End Sub

全シートの一番最後に新規シートを追加する

全シートの一番最後に新規シートを追加するには、挿入場所を指定するために一番最後のシートをまず取得する必要があります。これにはワークシートの枚数を取得してインデックス番号で挿入位置のワークシートを取得してやればOKです。

Public Sub AddWorksheet3()
    
    '--- ワークシートの枚数 ---'
    Dim n As Long
    n = ThisWorkbook.Worksheets.Count
    
    '--- 追加位置のワークシート ---'
    Dim wsAfter As Worksheet
    Set wsAfter = ThisWorkbook.Worksheets(n)
    
    '--- 追加したワークシートを格納する変数 ---'
    Dim wsTmp As Worksheet
    Set wsTmp = ThisWorkbook.Worksheets.Add(After:=wsAfter, Count:=[追加枚数])
    
End Sub