Excelを使っていると、シート名をわかりやすく変更したい場面がよくあります。
手動で変更することもできますが、たくさんのシートがある場合や定期的な作業には時間がかかります。
そこで便利なのが「VBA(Visual Basic for Applications)」です。
VBAを使えば、ボタンひとつで複数のシート名を一括で変更することも可能です。
本記事では、VBAでシート名を変更する基本の方法から、応用テクニックまでを初心者向けにわかりやすく解説します。
これを読めば、あなたもVBAでシート名を自在に操れるようになります!
VBA(Visual Basic for Applications)は、Microsoft Office製品に組み込まれているプログラミング言語です。
Excelにおいては、繰り返し作業や複雑な処理を自動化するのに役立ちます。
たとえば、次のようなことができます。
VBAは、マクロ記録や簡単なコードから始めれば、初心者でも扱える便利なツールです。
まずは最も基本的な「シート名の変更」コードから紹介します。
Sub ChangeSheetName()
Sheets("Sheet1").Name = "売上データ"
End Sub
このコードでは、「Sheet1」という名前のシートを「売上データ」に変更しています。
ポイントは、Sheets("シート名").Name = "新しいシート名"
という書き方です。
「今選択しているシートの名前を変更したい」という場合は、以下のように書けます。
Sub RenameActiveSheet()
ActiveSheet.Name = "集計結果"
End Sub
このコードでは、現在アクティブになっているシートの名前を「集計結果」に変更します。
毎回違うシートでこのマクロを実行する場合に便利です。
次に、複数のシート名を一括で変更したい場合のコードです。
たとえば、3つのシートを「1月」「2月」「3月」と名付けたいときは次のようにします。
Sub RenameMultipleSheets()
Dim sheetNames As Variant
sheetNames = Array("1月", "2月", "3月")
Dim i As Integer
For i = 0 To UBound(sheetNames)
Sheets(i + 1).Name = sheetNames(i)
Next i
End Sub
このように配列を使えば、簡単に複数のシート名を一気に変更できます。
ただし、配列の数とシートの数が一致している必要があるので注意しましょう。
毎日のデータ管理で、「2025-04-15」など日付をシート名にしたいことがあります。
そのような場合は、以下のように記述できます。
Sub RenameSheetWithDate()
Dim todayDate As String
todayDate = Format(Date, "yyyy-mm-dd")
ActiveSheet.Name = todayDate
End Sub
このコードを使えば、今日の日付が自動でシート名に反映されます。
日報や日次レポートに使うと便利です。
セルの内容を使ってシート名を決めたい場合は、以下のようにします。
Sub RenameSheetWithCellValue()
Dim newName As String
newName = Range("A1").Value
If newName <> "" Then
ActiveSheet.Name = newName
Else
MsgBox "セルA1に名前が入力されていません"
End If
End Sub
このコードは、セルA1に入力されている文字列をシート名として使います。
データ入力の担当者が直接セルに名前を記入するスタイルに向いています。
実際の運用では、変更しようとしてもエラーになることがあります。
その対策として「エラー処理(エラーハンドリング)」を加えておくと安心です。
Sub SafeRenameSheet()
On Error GoTo ErrorHandler
Dim newName As String
newName = InputBox("新しいシート名を入力してください")
If newName = "" Then Exit Sub
ActiveSheet.Name = newName
Exit Sub
ErrorHandler:
MsgBox "シート名の変更中にエラーが発生しました。" & vbCrLf & "同じ名前のシートがあるか、使用できない文字が含まれている可能性があります。"
End Sub
このようにすることで、ユーザーにわかりやすくエラー内容を通知できます。
最後に、全シートをループして、自動的に連番を付ける方法を紹介します。
Sub RenameAllSheets()
Dim i As Integer
For i = 1 To Worksheets.Count
Worksheets(i).Name = "Sheet_" & i
Next i
End Sub
このコードは、すべてのシートを「Sheet_1」「Sheet_2」…という名前に一括変更します。
大量のシートを管理するときに重宝するテクニックです。
VBAを使えば、シート名の変更作業が格段に効率化されます。
今回紹介した内容をまとめると以下のとおりです。
.Name = "新しい名前"
でできるまずは簡単なコードから試してみて、少しずつ応用力を伸ばしていきましょう。
VBAは慣れれば慣れるほど、Excel操作の大きな武器になります!