即効テクニック |
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