HOME > 即効テクニック > Excel VBA > シート操作関連のテクニック > ワークシートのコード名を取得する(CodeNameプロパティ)

ワークシートのコード名を取得する(CodeNameプロパティ)|Excel VBA

シート操作関連のテクニック

ワークシートのコード名を取得する(CodeNameプロパティ)

(Excel 97/2000/2002/2003/2007/2010)

WorksheetオブジェクトのCodeNameプロパティを使って、コード名を取得します。
サンプルマクロでは、シート名とコード名をメッセージボックスに表示します。

Sub Sample1()
    Dim sh As Worksheet
    For Each sh In Worksheets
        MsgBox "シート名 : " & sh.Name & vbCrLf & _
               "コード名 : " & sh.CodeName
    Next sh
End Sub

オブジェクトのコード名はオブジェクトを表すオブジェクト式の代わりに使用できます。例えば、1枚目のワークシートのコード名が 「Sheet1」 である場合、次の結果は同じです。

Sub Sample2()
    MsgBox Worksheets(1).Range("A1").Value
    MsgBox Sheet1.Range("A1").Value
End Sub

シート名とコード名は異なる場合もあります。
シートの作成時は、シート名とコード名は同じです。
しかし、シート名を変更してもコード名は変更されません。
また、Visual Basic Editorのプロパティウィンドウでコード名を変更してもシート名は変更されません。

次のサンプルはシートを右クリックしたときに、該当シートの右クリックメニューにメニュー項目を追加します。同じシートモジュール上に実行したいマクロを作成した場合は、CodeNameプロパティを使うと便利です。

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    With Application.CommandBars("Cell").Controls.Add(Before:=1)
        .Caption = "test"
        .OnAction = CodeName & ".test"
        .FaceId = 52
        .Parent.ShowPopup
        .Delete
    End With
    Cancel = True
End Sub

Private Sub test()
    MsgBox "元気?"
End Sub