【ExcelVBA】シートの新規作成とシート名の変更


この記事はプロモーションを含みます。

ExcelVBA

Excel VBAで、ブックにワークシートを新規作成する方法と、シート名を変更する方法を解説します。

Worksheets.Add メソッドについて

ブック内にシートを新規作成する場合は、「Worksheets.Add」メソッドを使用します。
Worksheets.Add メソッドを使用することで、新しいワークシートやグラフシート、マクロシートを作成することが可能です。
作成時、新しいワークシートがアクティブシートになります。

構文

Worksheets.Add メソッドの構文です。

Worksheets.Add(Before, After, Count, Type)

パラメーター

Worksheets.Add メソッドで使用出来るパラメーターです。

名前省略説明
Before省略可能Variant指定したシートオブジェクトの前に、新しいシートを追加します。
After省略可能Variant指定したシートオブジェクトの後に、新しいシートを追加します。
Count省略可能Variant追加するシートの枚数を指定します。
既定値は「1」です。
Type省略可能Variantワークシートの種類を XlSheetType定数で指定します。
既定値は「xlWorksheet」です。

XlSheetType定数は、下記の値が使用出来ます。

定数名説明
xlChart-4109Chart(グラフシート)
xlExcel4IntlMacroSheet4Excel バージョン 4 International Macro シート
xlExcel4MacroSheet3Excel バージョン 4 マクロ シート
xlWorksheet-4167ワークシート

シートの新規作成

ワークシートを新規作成する方法を説明します。

下記がサンプルのソースコードです。
実行することで、ワークシートが新規作成されます。
その際のシート名は「Sheet4」などが自動的に設定されます。

Sub Sample()

    Worksheets.Add

End Sub

シートを一括で作成する

一度に複数枚のシートを作成する方法を説明します。

「Count:=作成するシートの枚数」と記述することで、シートを一括で作成することが出来ます。
下記がサンプルコードです。例として、「3」枚のシートを作成しています。

Sub Sample()

    Worksheets.Add Count:=3

End Sub

指定したシート名でシートを作成する

シート名を指定しつつ、シートを作成する方法を説明します。

下記がサンプルコードです。
実行すると、「シート名」という名前で新しいシートが作成されます。

既に存在するシート名を指定すると、「アプリケーション定義またはオブジェクト定義のエラーです。」というエラーが発生します。

Sub Sample()

    Worksheets.Add.Name = "シート名"

End Sub

シート名を指定しつつ、「Before」や「After」などの Addメソッドのパラメーターを使用したい場合は、下記のように「Worksheets.Add(パラメーター).Name」というように記述する必要があります。

Worksheets.Add(After:=Worksheets(“Sheet3”)).Name = “シート名”

指定したシートの前に新規作成

指定したシートの前にワークシートを新規作成する方法を説明します。

例えば、シート名が「Sheet3」となっているシートの前に作成する場合は、下記のように記述します。

Sub Sample()

    Worksheets.Add Before:=Worksheets("Sheet3")

End Sub

シートは番号で指定することも可能です。
例えば、下記のように記述した場合は、シートの3枚目の前、つまり、2枚目のシートとして作成されます。

ブックにあるシートの枚数より大きい値(シートが3枚しか無いのに、5を指定するなど)を指定すると「インデックスが有効範囲にありません。」というエラーが発生します。

Sub Sample()

    Worksheets.Add Before:=Worksheets(3)

End Sub

指定したシートの後ろに新規作成

指定したシートの後ろにワークシートを新規作成する方法を説明します。

例えば、シート名が「Sheet3」となっているシートの後ろに作成する場合は、下記のように記述します。

Sub Sample()

    Worksheets.Add After:=Worksheets("Sheet3")

End Sub

シートは番号で指定することも可能です。
例えば、下記のように記述した場合は、シートの3枚目の後ろ、つまり、4枚目のシートとして作成されます。

ブックにあるシートの枚数より大きい値(シートが3枚しか無いのに、5を指定するなど)を指定すると「インデックスが有効範囲にありません。」というエラーが発生します。

Sub Sample()

    Worksheets.Add After:=Worksheets(3)

End Sub

シートを先頭に作成

一番前にシートを新規作成する方法を説明します。

下記のように、シートを番号「1」で指定することで、常に一番前にシートを作成することが可能です。

Sub Sample()

    Worksheets.Add Before:=Worksheets(1)

End Sub

シートを末尾に作成

一番後ろにシートを新規作成する方法を説明します。

シートを一番後ろに作成する場合も、作成する位置を番号で指定しますが、
以下のように、少し工夫が必要です。
① 現在のシートの枚数を取得する
② 取得したシートの枚数を元にして、その後ろにシートを作成する

現在のシートの枚数を取得する

シートの枚数を取得するサンプルコードになります。

サンプルのように「Worksheets.Count」と記述することで、シートの枚数を取得することが可能です。

Sub Sample()

    MsgBox (Worksheets.Count)

End Sub

シートを末尾に作成する

では、シートの枚数が取得出来たので、シートを末尾に作成する方法を見てみましょう。

前項で取得した現在のシートの枚数を使って、「After:=Worksheets(現在のシートの枚数)」と記述することで、常に一番後ろにシートを作成することが出来ます。

Sub Sample()

    Worksheets.Add After:=Worksheets(Worksheets.Count)

End Sub

シート名の変更

新規作成したシートの名前を変更する方法を説明します。

実装例①

Worksheets.Addメソッドで作成されたシートは、アクティブシートになるという性質を利用した方法です。

下記がサンプルコードです。
サンプルでは「Sheet3」の後ろに、新しいシートを作成し、シート名を「シート名」に変更しています。

Sub Sample()

    Worksheets.Add After:=Worksheets("Sheet3")
    ActiveSheet.Name = "シート名"

End Sub

実装例②

Worksheetオブジェクトを使用した方法です。

下記がサンプルコードです。
サンプルでは「Sheet3」の後ろに、新しいシートを作成し、シート名を「シート名」に変更しています。

Sub Sample()

    Dim ws As Worksheet
    Set ws = Worksheets.Add(After:=Worksheets("Sheet3"))
    ws.Name = "シート名"

End Sub

コメント

タイトルとURLをコピーしました