VBA ワークシートを追加して名前を設定する

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 8月 1, 2022

このチュートリアルでは、VBAを使用してワークシートを追加/挿入する方法について説明します。

シートを追加する

アクティブシートの前にSheetを追加するシンプルなマクロです。

Sub Add ()
    Sheets.Add
End Sub

シートを挿入すると、新しいシートがアクティブシートになります。つまり、ActiveSheetオブジェクトを使って、新しいシートを操作することができます。(この記事の下部で、新しいシートを変数に直接挿入する方法を紹介します。)

ActiveSheet.Name = "NewSheet"

名前を付けてシートを追加する

新しいシートを作成する際に、シート名を定義することもできます。

Sheets.Add.Name = "NewSheet"

セルから名前を付けて新しいシートを作成する

または、セルの値を使用して新しいシートに名前を付けることもできます。

Sheets.Add.Name = Range("a3").Value

他のシートの前/後にシートを追加する

新しいシートが挿入される場所を選択することもできます。After または Before プロパティを使用すると、ワークブック内の特定の場所にシートを挿入できます。

別のシートの後にシートを挿入する

このコードは、新しいシートを指定したシートの後に挿入します。

Sheets.Add After:=Sheets("Input")

こちらは、新しいシートを指定したシートの後に挿入し、さらにシート名を指定します。

Sheets.Add(After:=Sheets("Input")).Name = "NewSheet"

2番目の例では、余分に括弧が必要であることに注意してください。(最初の例では、2番目の括弧が追加されるとエラーが発生します。)

vba insert sheet after シート 挿入

指定したシートの前に挿入することもできます。

Sheets.Add(Before:=Sheets("Input")).Name = "NewSheet"

これらの例では、シートの位置を決定するために使用するシートに明示的に名前を付けています。多くの場合、シートのインデックス番号を代わりに使用し、シートをワークブックの先頭または末尾に挿入することができます。

ワークブックの末尾にシートを追加する

ワークブックの末尾にシートを追加するには、次のようにします。

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

ワークブックの先頭にシートを追加する

ワークブックの先頭に名前を付けてシートを追加するには以下のようにします。

Sheet.Add(Before:=Sheets(1)).Name = "FirstSheet"

シートを変数に追加する

このコードでは、シートを作成すると同時に変数に代入しています。

Dim ws As Worksheet
Set ws = Sheets.Add

これで、変数「ws」を使って新しいシートを参照することができます。

ws.name = "VarSheet"

その他のシートの追加の例

シートが存在しない場合にシートを作成する

シートがまだ存在しない場合にのみ、シートを作成したい場合があります。

名前の一覧からワークシートを作成する

次のルーチンは、1つの列の内容を見て、それらの名前で現在のワークブック内にExcelワークシートを作成します。同じシート名がすでに存在するかどうか、別の関数を呼び出して確認し、存在する場合はそのシートを作成しません。

Private Sub CommandButton1_Click()

Call CreateWorksheets(Sheets("Sheet2").Range("A1:A10"))

End Sub

Sub CreateWorksheets(Names_Of_Sheets As Range)
Dim No_Of_Sheets_to_be_Added As Integer
Dim Sheet_Name As String
Dim i As Integer

No_Of_Sheets_to_be_Added = Names_Of_Sheets.Rows.Count

For i = 1 To No_Of_Sheets_to_be_Added

Sheet_Name = Names_Of_Sheets.Cells(i, 1).Value

'同名のシートが存在しない場合にのみ追加する

If (Sheet_Exists(Sheet_Name) = False) And (Sheet_Name <> "") Then
    Worksheets.Add().Name = Sheet_Name
End If

Next i

End Sub
Function Sheet_Exists(WorkSheet_Name As String) As Boolean
Dim Work_sheet As Worksheet

Sheet_Exists = False

For Each Work_sheet In ThisWorkbook.Worksheets

    If Work_sheet.Name = WorkSheet_Name Then
        Sheet_Exists = True
    End If

Next

End Function

このように、シート2のセルA1:A10に以下のようなテキストがあるとします。

adding sheets シート 追加

すると、以下のようなシートが作成されます。

adding sheets シート 追加

なお、「Dog」はセル内には2つありますが、実際に作成される同名のシートは1つです。

このチュートリアルで使用する.XLSファイルをダウンロードするには、ここをクリックしてください。

VBAのコーディングが簡単に

VBAのコードをネットで探すのはもうやめましょう。AutoMacro – A VBA Code Builderを使えば、初心者が最小限のコーディング知識でゼロから手順をコーディングできるだけでなく、ベテランのユーザーも時間を節約できる多くの機能を備えています!

<<VBAのサンプルに戻る

vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples