この記事では、Excel VBAでワークシートを作成し、セルの値を使用してシート名を設定する方法をご紹介します。
シートを1枚追加し、セルの値を使って名前をつける
下図のように、Sheet1のセルA1に入力された「部署A」という名前のついたシートを、Sheet1の右側に追加してみたいと思います。
サンプルコード1
Sub セルの値を使用してワークシートを追加()
‘ Sheet1のセルA1の値を取得
Dim sheetName As String
sheetName = ThisWorkbook.Sheets(“Sheet1”).Range(“A1”).Value
‘ 新しいワークシートを右側に追加
Sheets.Add(After:=Sheets(Sheets.Count)).Name = sheetName
End Sub
新しいシートが作成されました。
サンプルコード1の解説
sheetName = ThisWorkbook.Sheets(“Sheet1”).Range(“A1”).Value
Sheet1のセルA1の値を取得し、それを新しいワークシートの名前として利用しています。
Sheets.Add
新しいワークシートを作成しています。
After:=Sheets(Sheets.Count)
既存のワークシートの右側に追加しています。
もし、左側に追加したい場合は、Before:=Sheets(Sheets.Count) とします。
複数のシート追加し、セルの値を使って名前をつける
次に、下図のように、Sheet1のA列にシート名が入力されているとします。
この値を使用したワークシートを一括で作成してみたいと思います。
サンプルコード2
Sub セルの値を使用してワークシートを一括作成()
‘ 変数の宣言
Dim ws As Worksheet
Dim sourceRange As Range
Dim i As Long
‘ Sheet1をソースとなるワークシートに設定
Set ws = ThisWorkbook.Sheets(“Sheet1”)
‘ ソースデータの範囲をA1からA列の最終行まで設定
Set sourceRange = ws.Range(“A1”, ws.Cells(ws.Rows.Count, “A”).End(xlUp))
‘ 2行目から最終行までの各セルの値を利用して新しいワークシートを作成
For i = 2 To sourceRange.Rows.Count
‘ 新しいワークシートを右側に追加
Sheets.Add(After:=Sheets(Sheets.Count)).Name = sourceRange.Cells(i, “A”).Value
Next i
End Sub
新しいシートが作成されました。
サンプルコード2の解説
このコードでは、For i ループを利用し、各セルの値を使用して新しいワークシートを右側に追加しています。
Set sourceRange = ws.Range(“A1”, ws.Cells(ws.Rows.Count, “A”).End(xlUp))
Sheet1のA列から最終行までの範囲を取得しています。
範囲を固定せず、動的に取得することで、変更があっても柔軟に対応できるようになります。
For i = 2 To sourceRange.Rows.Count
1行目はヘッダーなので使用せず、2行目から最終行までの各行に対してループします。
あとがき
今回の記事では、セルの値を使用してワークシートを1枚追加する方法・複数のシートを一括で追加する方法をご紹介しました。
これらの方法を、ぜひ実際の業務やデータ処理の際に活用してみてくださいね。