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