VBAシート名の取得と変更
In this Article
このチュートリアルでは、VBAでシート名を操作する方法を説明します。
シート名を取得する
シート名は、シートまたはワークシートオブジェクトのNameプロパティに格納されています。 シート名は、Excelの下部に表示されている「タブ」の名前です。
ActiveSheetの名前を取得する
ActiveSheetの名前をメッセージボックスに表示します。
MsgBox ActiveSheet.Name
インデックス番号でシート名を取得する
最初のワークシート名をメッセージボックスに表示します。
MsgBox Sheets(1).Name
ワークブックの最後のワークシートの名前が表示します。
MsgBox Sheets(Sheets.Count).Name
コード名でシート名を取得する
VBAエディタには、シートの「コード名」を変更するオプションがあります。このコード名はExcelのユーザーには表示されず、VBAエディタでのみ確認することができます。
VBAでは、シートを操作する際に、通常のタブ名を参照することができます。
Sheets("TabName").Activate
VBAのコード名を使うこともできます。
CodeName.Activate
コード名を参照することは、シートのタブ名が変更された場合に備えて望ましいことです。Excelのユーザーにシート名の変更を許可している場合、VBAコードでコード名を参照し、シートのタブ名の不一致でエラーが発生しないようにする必要があります。シートのコード名については、こちらで詳しく説明しています。 VBAのコード名を使ってシート名を取得するには、以下のようにします。
MsgBox CodeName.Name
シート名を変更する
シートまたはワークシートオブジェクトの nameプロパティを調整することで、シートの名前を変更することができます。
ActiveSheetの名前を変更する
ActiveSheet.Name = "NewName"
シートの名前を変更する
Sheets("OldSheet").Name = "NewName"
シートのインデックス番号でシート名を変更する
ここでは、ワークブックの最初のシートの名前を変更するために 1 を使用します。
Sheets(1).Name = "NewName"
コード名でシート名を変更する
このコードは、VBAのコード名(前述)を使ってシートの名前を変更するものです。
Component.Name = "NewName"
シート名が存在するか確認する
特定の名前のシートがすでに存在するかどうかをテストする関数を作成しました。
'シート上にセルの範囲が存在するかどうかをテストする
'シートが存在するかどうかをテストするために範囲を空白のままにする
'Inputs:
' WhatSheet - シート名を表す文字列 (例: "Sheet1")
' WhatRange (Optional) - 範囲を表す文字列 (例: "A1")
Function RangeExists(WhatSheet As String, Optional ByVal WhatRange As String = "A1") As Boolean
Dim test As Range
On Error Resume Next
Set test = ActiveWorkbook.Sheets(WhatSheet).Range(WhatRange)
RangeExists = Err.Number = 0
On Error GoTo 0
End Function
この関数は、シートが存在する場合はTRUEを、存在しない場合はFALSEを返します。
この関数は、次のように使用します。
Sub Test_SheetExists()
MsgBox RangeExists("setup")
End Sub
シートをコピーして名前を変更する
この例は、「シートのコピー」の記事から引用しています。 シートをコピー&ペーストすると、新しく作成されたシートがアクティブシートになります。そのため、コピーしたシートの名前を変更する場合は、単純にActiveSheet.Nameを使用します。
Sub CopySheetRename2()
Sheets("Sheet1").Copy After:=Sheets(Sheets.Count)
On Error Resume Next
ActiveSheet.Name = "LastSheet"
On Error GoTo 0
End Sub
注:シート名がすでに存在する場合のエラーを回避するためのエラー処理を追加しました。