ワークシートのコード名を取得する(CodeNameプロパティ)|Excel VBA |
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