即効テクニック

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

新しいコマンドバーを作成する

(Excel 2000)
CommandBarsコレクションオブジェクトに対してAddメソッドを使用することで、ユーザー定義のコマンドバーを作成します。この場合は構文Aを使用します。作成したコマンドバーにコントロールを追加するには、CommandBarControlsコレクションオブジェクトに対して、構文BのAddメソッドを使用します。
構文A  Object.Add(Name, Position, MenuBar, Temporary)
構文B  Object.Add(Type, Id, Parameter, Before, Temporary)


設定項目      内容
Object        CommandBars、CommandBarControlsコレクションオブジェクト 
       [省略不可]
 Name          新しいコマンドバーの名前を指定 [省略可能]
Position      新しいコマンドバーの位置を指定 [省略可能]
MenuBar       Trueでアクティブなメニューバーが新しいコマンドバーで置き換わる。
       規定値はFalse [省略可能]
Temporary     Trueでエクセルの終了と同時に削除。規定値はFalse [省略可能]
Type          コマンドバーに追加するコントロールの種類を指定 [省略可能]
Id            組み込みのコントロールを表す整数を指定。規定値は1 [省略可能]
Parameter     コントロールの実行に用いる引数を指定 [省略可能]
Before        新しいコントロールの位置を表す数字を指定 [省略可能]


次のサンプル1は「Sample」という名前でユーザー定義のコマンドバーを作成します。

●サンプル●
Sub AddSamp1()
  Dim myCB As CommandBar

 On Error Resume Next        '---ツールバー削除時にエラーが発生しても無視
 CommandBars("Sample").Delete  '---同名のツールバーを削除
 Set myCB = CommandBars.Add(Name:="Sample", _
     Position:=msoBarFloating, MenuBar:=False, Temporary:=True)
   '---(1)ユーザー定義のツールバーを作成し、変数myCBに格納
 With myCB    '---作成したツールバーに対して
    .Controls.Add Type:=msoControlButton, ID:=21, before:=1
    '---(2)1番めの位置にID:=21(切り取り)ツールバーボタンを作成
    .Controls.Add Type:=msoControlEdit, before:=2
    '---2番めの位置にエディットボックスを作成
    .Controls.Add Type:=msoControlDropdown, before:=3
    '---3番めの位置にドロップダウンリストボックスを作成
    .Controls.Add Type:=msoControlComboBox, before:=4
    '---4番めの位置にコンボボックスを作成
    .Controls.Add(Type:=msoControlPopup, before:=5).Caption = "Popup"
    '---5番めの位置にサブメニューを持つメニューを作成
    .Visible = True      '---作成したツールバーを表示する
 End With
End Sub

(1)のステートメントでユーザー設定のツールバーを作成します。引数Positionには下の一覧表の定数でツールバーの作成される位置を指定します。

・引数Positionで使用する引数一覧(MsoBarPositionクラス)

定数             値         説明
msoBarLeft        0         ウィンドウの左端
msoBarTop         1         ウィンドウの上端
msoBarRight       2         ウィンドウの右端
msoBarBottom      3         ウィンドウの下端
msoBarFloating    4         固定されない
msoBarPopup       5         ショートカットメニューとして作成される
msoBarMenuBar     6         Macintoshのみ


引数MenuBarにTrueを指定した場合には、作成されるツールバーが現在のメニューバーに
置き換えられて、新しいメニューバーとなります。引数TemporaryにTrueを指定しているため、
作成されたツールバーは、テンポラリのツールバーとなり、Excel終了時に削除されます。
Controlsコレクションオブジェクトに対してAddメソッドを使用すると、コマンドバー
コントロールを作成します。作成するコントロールの種類は引数Typeで指定します。


・引数Typeで指定する定数一覧(MsoControlTypeクラス)

定数                値         説明
msoControlButton     1         ツールバーボタン
msoControlEdit       2         エディットボックス
msoControlDropdown   3         ドロップダウンリストボックス
msoControlComboBox   4         コンボボックス
msoControlPopup     10         サブメニューを持つメニュー


(2)のステートメントでは、引数Typeに定数msoControlButtonを指定することでツールバーボタンを作成しています。さらに引数IDを指定することで、その値に応じた組み込むコントロールとしています。作成したユーザー定義のツールバーでは、合計5つの種類の異なるコントロールが、引数Beforeで指定した位置に追加されています。

●ポイント●
コマンドバーコントロールは、既存のツールバー、メニューバー、ショートカットメニューに追加して作成することも可能です。
次のサンプル2はワークシートのセルのショートカットメニューにコントロールを追加します。実行後、セルを右クリックしてみてください。

●サンプル2●
Sub AddSamp2()
  Dim myCBCtrl As CommandBarButton

   Set myCBCtrl = CommandBars("cell").Controls.Add _
    (Type:=msoControlButton, ID:=2619, before:=9)
    '---セルのショートカットメニューの9番目の位置に
    '   ID:=2619(ファイルから画像の挿入)を追加
End Sub