ショートカットメニュー(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() を実行
関連記事
-
色を設定する(QBColor 関数)
QBColor 関数 QBColor 関数は、指定した色番号に対応するRGB コ …
-
カレントフォルダの取得・設定(DefaultFilePath プロパティ)
DefaultFilePath プロパティ カレントフォルダとは、ブックを開いた …
-
セルのデータを固定長形式で複数のセルに分割する(TextToColumns メソッド・Parse メソッド)
固定長形式でセルを分割 TextToColumns メソッドや Parse メソ …
-
日付時刻:数値から日付・時刻データを取得( DateSerial 関数、TimeSerial 関数 )
DateSerial 関数(数値を使って日付データを取得) 【書式】 date …
-
ユーザー設定リストを使って並べ替える(Sort)
VBAでリスト、テーブルを並べ替える(Sort) VBAで、ソートを行うには、S …
-
文字列:指定した文字の文字コードを取得する(Asc 関数)
Asc 関数 【書式】 result = Asc ( string ) 引数・戻 …
-
XlThemeColor 列挙型
XlThemeColor 列挙 定数 値 内容 xlThemeColorDark …
-
文字列:文字列を指定した形式に変換する(StrConv 関数)
StrConv 関数の使い方 【書式】 result = StrConv ( s …
-
文字列:文字を指定数並べた文字列を返す(String 関数)
String 関数 【書式】 result = String ( number, …
-
配列(宣言・要素数の変更について)
配列の宣言 【書式】※ 配列の宣言 <Type 型の静的配列(固定長配列)の宣言 …