VBA ワークシートを追加して名前を設定する
In this Article
このチュートリアルでは、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番目の括弧が追加されるとエラーが発生します。)
指定したシートの前に挿入することもできます。
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に以下のようなテキストがあるとします。
すると、以下のようなシートが作成されます。
なお、「Dog」はセル内には2つありますが、実際に作成される同名のシートは1つです。
このチュートリアルで使用する.XLSファイルをダウンロードするには、ここをクリックしてください。
VBAのコーディングが簡単に
VBAのコードをネットで探すのはもうやめましょう。AutoMacro – A VBA Code Builderを使えば、初心者が最小限のコーディング知識でゼロから手順をコーディングできるだけでなく、ベテランのユーザーも時間を節約できる多くの機能を備えています!