VBAで自動化 VBA一覧 シート追加 セル・シート・ブック操作

【VBA】シートを追加して名前を付ける方法:Sheets.Addメソッド・Nameプロパティ

Excel VBAでは、新しいシートを追加し、指定したシート名をつけることができます。これを活用することで、レポート作成やデータ管理の自動化が可能になります。

シートを追加して名前を付ける方法を、基本から活用方法までわかりやすく解説します。

新しいシートを追加する

VBA のSheets.Addメソッドを使用する場合、新しいシートを追加できます。

Sub AddSheet()

Sheets.Add

End Sub

解説

  • 上記のコードを実行すると、新しいシートが最新のアクティブなシートの前(左側)に追加されます。
  • 「Sheet1」や「Sheet2」といった名前が自動で付けられます。

シートに名前を付ける

追加したシートに名前を付けるには、Nameプロパティを使用します。

Sub AddSheetWithName()

Dim newSheet As Worksheet

' 新しいシートを追加してオブジェクトを取得
Set newSheet = Sheets.Add
' シートに名前を付ける
newSheet.Name = "新しいシート"

End Sub

解説

指定した位置にシートを追加する

BeforeまたはAfterプロパティを使用して、特定の位置にシートを追加できます。

【指定したシートの前に追加】

Sub AddSheetBefore()

Sheets.Add Before:=Sheets("Sheet1")

End Sub

解説

  • Beforeプロパティで、「Sheet1」の前(左側)に新しいシートを追加します。

【指定したシートの後に追加】

Sub AddSheetAfter()

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

End Sub

解説

  • Afterプロパティで、「Sheet1」の後(右側)に新しいシートを追加します。

ユーザー入力に基づいて名前を付ける

InputBoxを使って、ユーザーが入力した名前で新しいシートを作成することもできます。

Sub AddSheetWithUserName()

Dim sheetName As String
Dim newSheet As Worksheet

' ユーザーに名前を入力させる
sheetName = InputBox("新しいシートの名前を入力してください:")

' 名前が空白でなければシートを追加
If sheetName <> "" Then

Set newSheet = Sheets.Add
On Error Resume Next ' 名前の重複エラーを無視
newSheet.Name = sheetName
If Err.Number <> 0 Then

MsgBox "同じ名前のシートが存在します。", vbExclamation
Application.DisplayAlerts = False
newSheet.Delete
Application.DisplayAlerts = True

End If
On Error GoTo 0

Else

MsgBox "名前が入力されませんでした。", vbInformation

End If

End Sub

解説

 

複数のシートを追加して名前を付ける

複数のシートを連続して追加し、それぞれに名前を付けます。

Sub AddMultipleSheets()

Dim sheetNames As Variant
Dim i As Integer
Dim newSheet As Worksheet

' 追加するシート名を配列で定義
sheetNames = Array("月次報告", "週次報告", "日次報告")

' シートを追加して名前を設定
For i = LBound(sheetNames) To UBound(sheetNames)

Set newSheet = Sheets.Add
On Error Resume Next
newSheet.Name = sheetNames(i)
If Err.Number <> 0 Then

MsgBox "シート名 '" & sheetNames(i) & "' は既に存在します。", vbExclamation
newSheet.Delete

End If
On Error GoTo 0

Next i

End Sub

解説

シート名が存在するか確認する

シートを追加する前に、名前が既に存在するかチェックすることでエラーを回避できます。

Function SheetExists(sheetName As String) As Boolean

Dim ws As Worksheet
On Error Resume Next
Set ws = Sheets(sheetName)
SheetExists = Not ws Is Nothing
On Error GoTo 0

End Function

Sub AddSheetIfNotExists()

Dim sheetName As String
Dim newSheet As Worksheet

sheetName = "チェックシート"

If Not SheetExists(sheetName) Then

Set newSheet = Sheets.Add
newSheet.Name = sheetName
MsgBox "シート '" & sheetName & "' を追加しました。"

Else

MsgBox "シート '" & sheetName & "' は既に存在します。"

End If

End Sub

解説

シートの名前を動的に作成

日付や時刻を基にシート名を動的に作成することも可能です。

Sub AddSheetWithDynamicName()

Dim newSheet As Worksheet
Dim sheetName As String

' 日付を基にシート名を作成
sheetName = Format(Date, "yyyy-mm-dd")

If Not SheetExists(sheetName) Then

Set newSheet = Sheets.Add
newSheet.Name = sheetName

Else

MsgBox "シート '" & sheetName & "' は既に存在します。", vbExclamation

End If

End Sub

解説

まとめ

Excel VBAを使ったシートの追加と名前付けのポイントは以下の通りです。

  1. Sheets.Addメソッドで新しいシートを追加。
  2. Nameプロパティを使ってシートに名前を付けます。
  3. 重複チェックでエラーを回避します。
  4. 配列や動的な名前生成で柔軟なシート管理を実現。

    -VBAで自動化, VBA一覧, シート追加, セル・シート・ブック操作