ショートカットメニュー(CommandBar オブジェクト)
2016/01/28
ショートカットメニュー(コンテキストメニュー)
右クリックで表示されるメニューのことをコンテキストメニューまたはショートカットメニューといいます。これらは、CommandBar オブジェクトで操作します。
主なショートカットメニュー(コンテキストメニュー)
    <セル>
    object.CommandBars(“Cell”)
    <行>
    object.CommandBars(“Row”)
    <列>
    object.CommandBars(“Column”)
    <シート>
    object.CommandBars(“Ply”)
    <グラフ>
    object.CommandBars(“chart”)
    <図形>
    object.CommandBars(“shapes”)
    <オートフィル>
    object.CommandBars(“autofill”)
引数・戻り値
- object ・・・ 対象となる Application オブジェクトを指定します。
 
Controls プロパティ
コマンドバーのすべてのコントロールを表す CommandBarControls コレクションを取得します。(読み取り専用)
object.Controls
引数・戻り値
- object  ・・・  対象となる CommandBar オブジェクトを指定します。
(例)CommandBars(“Cell”)、CommandBars(“Row”)、CommandBars(“Column”)、CommandBars(“Ply”)、CommandBars(“chart”) グラフ、CommandBars(“shapes”) 図形、CommandBars(“autofill”) オートフィル など 
ショートカットメニューへのコントロールの登録や設定について
コントロールの作成
ショートカットメニュー(コンテキストメニュー)上にコントロールを登録するには、Controls.Add メソッドを使用します。Controls.Add メソッドは、新しい CommandBarControl オブジェクトを作成し、指定した CommandBarControls コレクションに追加します。
object.Add ( type, id, parameter, before, temporary )
引数・戻り値
- object ・・・ 対象となる CommandBarControls コレクションを指定します。
 - type ・・・ MsoControl 列挙型 の定数を指定します。指定できるのは、msoControlButton(通常のボタン)または、msoControlPopup(サブメニューを持つボタン)のいずれかで、省略すると msoControlButton を指定した場合と同じになります。
 - id  ・・・  Excel が持つ既存の機能を割り当てたい場合にのみ、その機能を表す ID 番号 を指定します。
(例)機能(ID 番号)
ファイルを開く(23)、ファイルを閉じる(106)、上書き保存(3)、コピー(19)など - parameter  ・・・  実行するプロシージャで使用する引数を指定します。(省略可)
(例)プロシージャ内でこの値を使用するには、
Application.CommandBars.ActionControl.Parameter
とします。 - before  ・・・  コントロールを登録する位置を 1 以上の整数値で指定します。(省略可)
(例)Before:= 1 この場合、メニューの一番上に設定されます。 - temporary ・・・ True を指定するとエクセル終了時に削除されます。規定値は、False です。(省略可)
 - 戻り値 ・・・ CommandBarControl オブジェクト
 
コントロールの名前を設定
登録したコントロールの名前(ショートカットメニューに表示される文字列)を取得・設定を行うには、Caption プロパティを使用します。
object.Caption
引数・戻り値
- object ・・・ 対象となる CommandBarControl オブジェクトを指定します。
 
コントロールにマクロを登録する
コントロールにマクロを登録するには、OnAction プロパティに、実行するマクロ名(プロシージャ名)を設定します。
object.OnAction
引数・戻り値
- object ・・・ 対象となる CommandBarControl オブジェクトを指定します。
 
マクロの指定方法
    (例)マクロ名を、TestMacro とすると、
       .OnAction = “TestMacro”
    のように指定します。
引数を指定する方法 1
    CommandBarControls.Add メソッド の引数 parameter に指定します。
    (例)CommandBars(“Cell”).Controls.Add(Parameter:=”こんにちは!”)
引数を指定する方法 2
    CommandBarControl.OnAction プロパティに、引数を含めて指定します。
    (例)マクロ名を、TestMacro とすると、
       .OnAction = “‘TestMacro(“”こんにちは!””)'”
    のように指定します。
区切り線を挿入する
BeginGroup プロパティに、True を設定すると、指定したコントロールの上部に区切り線を入れることができます。
object.BeginGroup
引数・戻り値
- object ・・・ 対象となる CommandBarControl オブジェクトを指定します。
 
コントロールにアイコン(ボタンのイメージ)を表示する
アイコンを設定するには、FaceId プロパティに、アイコンを表す数値を設定します。
object.FaceId
引数・戻り値
- object ・・・ 対象となる CommandBarControl オブジェクトを指定します。
 
コントロールの情報・説明等を設定
Tag プロパティ を使用すると、指定したコントロールについての情報や説明等を設定することができます。
object.Tag
引数・戻り値
- object ・・・ 対象となる CommandBarControl オブジェクトを指定します。
 
コントロールの表示・非表示を設定
コントロールを表示するには、Visible プロパティに True を指定します(既定値)。非表示にするには、False を指定します。ブール型(Boolean)の値を使用します。
object.Visible
引数・戻り値
- object ・・・ 対象となる CommandBarControl オブジェクトを指定します。
 
コントロールにチェックを入れる
State プロパティに True を指定するとショートカットメニュー(コンテキストメニュー)を表示した時、指定したコントロールにチェックマークが表示します。False を指定する元の状態に戻ります。ブール型(Boolean)の値を使用します。
object.State
引数・戻り値
- object ・・・ 対象となる CommandBarControl オブジェクトを指定します。
 
コントロールを削除
登録したコントロールを削除するには、Delete メソッドを使用します。ただし、存在しないコントロールを削除しようとするとエラーが発生します。
object.Delete
引数・戻り値
- object ・・・ 対象となる CommandBarControl オブジェクトを指定します。
 
    CommandBars(“Cell”).Controls(“削除するコマンド名“).Delete
    CommandBars(“Cell”).Controls(Index 番号).Delete
    ※ CommandBar オブジェクトは、Index 値(長整数型)を使って指定することも可能です。
ショートカットメニュー(コンテキストメニュー)を初期化
ショートカットメニュー(コンテキストメニュー)を初期状態に戻すには、CommandBar オブジェクト の Reset メソッド を使用します。ただし、アドインを設定した時に登録されたコマンドなども消えてしまうので使用時には注意が必要です。
object.Reset
引数・戻り値
- object  ・・・  対象となる CommandBar オブジェクトを指定します。
(例)CommandBars(“Cell”)、CommandBars(“Row”)、CommandBars(“Column”)、CommandBars(“Ply”)、CommandBars(“chart”) グラフ、CommandBars(“shapes”) 図形、CommandBars(“autofill”) オートフィル など 
コンテキストメニュー(ショートカットメニュー)使用例
サンプルVBAソース
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101  | 
						Sub test01()     MsgBox Application.CommandBars.ActionControl.Parameter End Sub Sub test02(value)     MsgBox value End Sub Sub test03()     MsgBox "test03 実行しました" End Sub Sub Sample_CommandBars_Cell_01()     Dim str As String     Dim cbar1 As CommandBarControl     Dim cbar2 As CommandBarControl     Dim cbar3 As CommandBarControl     Dim cbar4 As CommandBarControl     str = "おはようございます"     'セルショートカットメニューを初期化     CommandBars("Cell").Reset     'セルショートカットメニューに追加(引数指定、ブックを閉じた後削除)     Set cbar1 = CommandBars("Cell").Controls.Add(Parameter:=str, temporary:=True)     'ショートカットメニューに表示する名前の設定     cbar1.Caption = "test01"     'コントロールをクリックした時に実行するプロシージャ名を登録     cbar1.OnAction = "test01"     'セルショートカットメニューに追加(ブックを閉じても削除しない)     Set cbar2 = CommandBars("Cell").Controls.Add     'ショートカットメニューに表示する名前の設定     cbar2.Caption = "test02"     'コントロールをクリックした時に実行するプロシージャ名を登録     cbar2.OnAction = "'test02(""あいう"")'"     'コントロールにチェックマークを表示     cbar2.State = True     'セルショートカットメニューに追加(サブメニューを持つボタン、ブックを閉じた後削除)     Set cbar3 = CommandBars("Cell").Controls.Add(Type:=msoControlPopup, temporary:=True)     'ショートカットメニューに表示する名前の設定     cbar3.Caption = "メニュー"     'サブメニューに追加(ブックを閉じた後削除)     With cbar3.Controls.Add(temporary:=True)         '名前の設定         .Caption = "コマンド1"         'コントロールをクリックした時に実行するプロシージャ名を登録         .OnAction = "test03"         'Tag の設定         .Tag = "サブ:コマンド1"     End With     'サブメニューに追加(ブックを閉じた後削除)     With cbar3.Controls.Add(temporary:=True)         '名前の設定         .Caption = "コマンド2"         '表示しない         .Visible = False         'Tag の設定         .Tag = "サブ:コマンド2"     End With     'サブメニューに追加(ブックを閉じた後削除)     With cbar3.Controls.Add(temporary:=True)         '名前の設定         .Caption = "コマンド3"         'Tag の設定         .Tag = "サブ:コマンド3"     End With     '区切り線を挿入する     CommandBars("Cell").Controls.Item(cbar3.Index).BeginGroup = True     'コマンド3 を削除     Dim c As CommandBarControl     For Each c In cbar3.Controls         If c.Tag = "サブ:コマンド3" Then             c.Delete         End If     Next c End Sub  | 
					
実行結果
Sample_CommandBars_Cell_01() を実行
関連記事
-  
            
              - 
      
四捨五入・切り上げ・切り捨て・丸め(Round 関数 他)
Round 関数(丸め)の使い方 【書式】 value = Round ( ex …
 
-  
            
              - 
      
文字列:指定した数の空白(スペース)からなる文字列を返す(Space 関数)
Space 関数 【書式】 result = Space ( number ) …
 
-  
            
              - 
      
乱数を生成する(Rnd 関数)
Rnd 関数の使い方 Rnd 関数は、0 以上、1 未満の範囲の乱数を単精度浮動 …
 
-  
            
              - 
      
VBA で正規表現を使う(RegExp オブジェクトのメソッド)
RegExp オブジェクトのメソッド RegExp オブジェクトの詳細に関しては …
 
-  
            
              - 
      
XlThemeColor 列挙型
XlThemeColor 列挙 定数 値 内容 xlThemeColorDark …
 
-  
            
              - 
      
フォント名(Name,ThemeFont,StandardFont)
フォント名を取得・設定する(Name プロパティ) Name プロパティは、オブ …
 
-  
            
              - 
      
ユーザー定義定数(Const ステートメント)
定数を使う ユーザー定義の定数を使用するには、Const ステートメントを使って …
 
-  
            
              - 
      
文字列:文字列を指定した形式に変換する(StrConv 関数)
StrConv 関数の使い方 【書式】 result = StrConv ( s …
 
-  
            
              - 
      
日付時刻:日付から曜日を取得( Weekday 関数、WeekdayName 関数 )
Weekday 関数(日付から曜日を表す数値を返す)の使い方 【書式】 week …
 
-  
            
              - 
      
色の設定(ThemeColor プロパティ・TintAndShade プロパティ)
ThemeColor プロパティ・TintAndShade プロパティ テーマカ …
 
        