VBAシート名の取得と変更

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 2月 5, 2023

このチュートリアルでは、VBAでシート名を操作する方法を説明します。

シート名を取得する

シート名は、シートまたはワークシートオブジェクトNameプロパティに格納されています。 シート名は、Excelの下部に表示されている「タブ」の名前です。

vba sheet tab name シート名 タブ名

ActiveSheetの名前を取得する

ActiveSheetの名前をメッセージボックスに表示します。

MsgBox ActiveSheet.Name

インデックス番号でシート名を取得する

最初のワークシート名をメッセージボックスに表示します。

MsgBox Sheets(1).Name

ワークブックの最後のワークシートの名前が表示します。

MsgBox Sheets(Sheets.Count).Name

コード名でシート名を取得する

VBAエディタには、シートの「コード名」を変更するオプションがあります。このコード名はExcelのユーザーには表示されず、VBAエディタでのみ確認することができます。

vba sheet code name シート コード名

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

注:シート名がすでに存在する場合のエラーを回避するためのエラー処理を追加しました。

vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples