Excel で vba を使用してシートの名前を変更するにはどうすればよいですか?
新しいシートをワークブックに追加するときに、名前を付けるオプションがあります。ただし、ワークシートの name プロパティを使用していつでも名前を変更することもできます。このチュートリアルでは、VBA コードを使用してシートまたは複数のシートの名前を変更するさまざまな方法を見ていきます。
VBA コードを使用してシートの名前を変更する手順
- まず、ワークシート オブジェクトを使用して、名前を変更するシートを定義します。
- その後、(.Name) を使用して、変更する名前プロパティにアクセスする必要があります。
- 次に、等号を入力して、シートの名前を変更するために使用する値を VBA に伝えます。
- 最後に、使用するシートの名前を入力します。
役立つリンク:マクロの実行–マクロ レコーダー– Visual Basic Editor –パーソナル マクロ ハンドブック
アクティブシートの名前を変更する
アクティブ シートの名前を変更する場合は、シート名を設定する必要はありません。代わりに、この時点でアクティブ シートを参照するように VBA に指示する ActiveSheet オブジェクトを使用する必要があります。コードは次のとおりです。
Activesheet.Name = "mySheet"
注:シートの名前を変更する場合、シートをアクティブにする必要はありません。
シート番号を使用してシートの名前を変更します
ご存知のとおり、各シートにはワークブック内の位置に応じた番号が付いています。 5 番目の番号にあるシートの名前を変更したいとします。コードは次のようになります。
Sheets(5).Name = "mySheet5"
上記のマクロを実行すると、5 番目の番号にあるシートの名前が変更されます。
名前を変更する前にシートが存在するかどうかを確認してください
存在しないワークシートの名前を変更しようとすると、VBA は次のようなエラーを表示します。
この問題の解決策は、 FOR EACHを使用する次のコードです。これにより、すべてのワークシートをループして定義したシートを見つけ、そのシートの名前を変更できます。
Sub check_sheet_rename() Dim ws As Worksheet Dim mySheet As String Dim SheetName As String mySheet = InputBox("enter the name of the sheet that you want to rename.") SheetName = InputBox("Enter new name for the sheet.") For Each ws In ThisWorkbook.Worksheets If mySheet = ws.Name Then ws.Name = SheetName End If Next ws End Sub
セルまたは範囲の値を使用してシートの名前を変更する
セルの値を取得してシートの名前を変更することもできます。値がセル A1 にあるとします。
Sheets("Sheet1").name = Range("A1").Value
ただし、セル範囲の値に基づいて複数のシートに名前を付けたいとします。この場合、次のようなコードが必要です。
Sub vba_sheet_rename_multiple() Dim wsCount As Long Dim rCount As Long Dim ws As Worksheet Dim name As Range Dim i As Long wsCount = ThisWorkbook.Worksheets.Count rCount = Range("A1:A10").Rows.Count 'Checks if the count of the names provided is less _ or more than the sheets in the workbook If wsCount <> rCount Then MsgBox "There's some problem with the names provided." Exit Sub Else 'Check if any of the cells in the name range is empty. For Each name In Range("A1:A10") If IsEmpty(name) = True Then i = i + 1 End If Next name If i > 0 Then MsgBox "There's is a blank cell in the names range." Exit Sub End If End If 'rename each sheet using the value from the range cell by cell. i = 1 For Each ws In ThisWorkbook.Worksheets ws.name = Range("A1:A10").Cells(i, 1).Value i = 1 + i Next ws End Sub
この VBA コードを実行すると、まず範囲内のセルがブック内のシートの数と等しいかどうかがチェックされます。その後、指定した範囲内のすべてのセルに値があるかどうかをチェックします。最後に、これらの名前を使用してすべてのシートの名前を変更します。
IF THEN ELSEを使用して 2 つの条件をチェックし、すべてのシートの名前を変更します。
関連するチュートリアル
- Excel で VBA を使用してシート全体を消去する
- VBA を使用して Excel でシートをコピーおよび移動する
- Excel で VBA を使用した COUNT シート
- Excel で VBA を使用してシートを削除する
- Excel で VBA を使用してシートを非表示および表示する