HOME > 即効テクニック > Excel VBA > メニューバー・ツールバー関連のテクニック > コマンドバーの種類を取得する(Typeプロパティ)

即効テクニック

メニューバー・ツールバー関連のテクニック

コマンドバーの種類を取得する(Typeプロパティ)

(Excel 2000)

コマンドバーはツールバー、メニューバー、ショートカットメニューの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プロパティで識別するようにしてください。