コマンドバーはツールバー、メニューバー、ショートカットメニューの3種類に大別されます。対象のコマンドバーの種類を調べるにはTypeプロパティを使用します。
●詳細●
使用される定数は下の一覧表のとおりです。
構文 Object.Type Type 取得のみ
設定項目 内容
Object CommandBarオブジェクト [省略不可]
・Typeプロパティで使用する定数一覧(MsoBarTypeクラス)
定数 値 内容
mosBarTypeNormal 0 ツールバー
mosBarTypeMenuBar 1 メニューバー
mosBarTypepopup 2 ショートカットメニュー
次のサンプルは、コマンドバー一覧をワークシート上作成します。
●サンプル●
Sub TypeSamp1()
Dim myCB As CommandBar
Dim i As Integer
Range("A1").Value = "Index"
Range("B1").Value = "名前"
Range("C1").Value = "名前(日本語)"
Range("D1").Value = "種類(組み込み定数)"
i = 1
For Each myCB In CommandBars
i = i + 1
Cells(i, 1).Value = myCB.Index 'インデックス番号
Cells(i, 2).Value = myCB.Name '名前
Cells(i, 3).Value = myCB.NameLocal '名前(日本語)
Select Case myCB.Type '種類(組み込み定数)
Case 0
Cells(i, 4) = "msoBarTypeNormal"
Case 1
Cells(i, 4) = "msoBarTypeMenuBar"
Case 2
Cells(i, 4) = "msoBarTypePopup"
End Select
Next myCB
End Sub
コードの実行すると一覧表が作成されます。
Indexが90番のショートカットメニュー「コマンドの追加」は、Excel起動後に一度もツールバーの[ユーザー設定]ダイアログボックスを表示していない場合にのみ作成されます。また、ユーザー設定のツールバーが作成されている場合、それもコマンドバーのコレクションに含まれるため、Index値は変わってきます。
これらの理由から、コマンドバーを参照する際にはNameプロパティで識別するようにしてください。