【VBA】シート名を変更する

Excel VBAでは、シートのNameプロパティを使うことで、簡単にシート名を変更することができます。
本記事では、シート名を変更する基本方法から、エラー対策、複数シートを一括変更する方法まで解説します。


1. 特定のシート名を変更する

シート名を変更するには、以下のように Worksheets("旧シート名").Name = "新シート名" と指定します。

Sub RenameSheet()
Worksheets("Sheet1").Name = "Data"
End Sub

この例では、**「Sheet1」**という名前のシートを **「Data」**に変更します。


2. アクティブシートの名前を変更する

現在アクティブになっているシートの名前を変更したい場合は、ActiveSheet.Nameを使います。

Sub RenameActiveSheet()
ActiveSheet.Name = "Report"
End Sub

3. シート名変更時の注意点

シート名を変更する際、以下のルールに違反するとエラーが発生します。

  • 31文字を超える名前は設定できない
  • \ / ? * [ ] : など一部の記号は使用できない
  • 同じ名前のシートが既に存在するとエラーになる

4. エラー対策付きのコード例

同名シートが存在しないか事前に確認してから名前を変更する例です。

Sub SafeRenameSheet()
Dim newName As String
newName = "Data"

If SheetExists(newName) Then
MsgBox "シート名「" & newName & "」は既に存在します。"
Else
ActiveSheet.Name = newName
End If
End Sub

'シート名が存在する関数
Function SheetExists(ByVal sheetName As String) As Boolean
On Error Resume Next
SheetExists = Not Worksheets(sheetName) Is Nothing
On Error GoTo 0
End Function

5. 複数シートを一括でリネームする

複数のシート名を自動で「シート1」「シート2」のように連番で変更したい場合は、以下のコードを使用します。

Sub RenameSheetsWithNumber()
Dim ws As Worksheet
Dim i As Long

i = 1
For Each ws In Worksheets
ws.Name = "シート" & i
i = i + 1
Next ws
End Sub

6. まとめ

  • Worksheets("旧名").Name = "新名" で簡単に名前を変更可能
  • シート名は31文字以内、禁止文字あり
  • 同名シートがあるとエラーになるため、事前チェックを推奨
  • 複数シートもループ処理で一括変更できる

コメント

タイトルとURLをコピーしました