はじめに
ひらちんです。
自分で作成したマクロを右クリックのメニューで実行出来るように、右クリックメニューに項目を登録する方法を紹介します!
メニューにコマンドを登録する
With CommandBars(“Cell”).Controls.Add
.Caption = “キャプション”
End With
キャプションのところには、表示したいメニュー名を入れます。
試しに、「ひらちん」というメニューを登録しましょう。
Sub sample()
With CommandBars("Cell").Controls.Add
.Caption = "ひらちん"
End With
End Sub
実行すると次のように「ひらちん」というメニュー項目が追加されます。
コマンドにマクロを登録する際には、「OnActionプロパティ」に実行したいマクロ名を登録します。
Sub sample()
With CommandBars("Cell").Controls.Add
.Caption = "ひらちん"
.OnAction = "sample2"
End With
End Sub
Sub sample2()
MsgBox "ひらちん"
End Sub
OnActionプロパティにsample2プロシージャを登録します。
※このコードを実行すると、また「ひらちん」メニューが登録されますので、最初に作ったものは消しています。
実行してみましょう!
「ひらちん」のメニューを実行することで、メッセージ(sample2プロシージャが動いた)が表示されました。
メニューのコマンドを削除する
コマンドを削除する場合は、次のようにコントロールのキャプションを指定してDeleteメソッドを実行します。
CommandBars(“Cell”).Controls(“キャプション”).Delete
無いメニューを指定すると、エラーになるので注意してください。
Sub sample()
CommandBars("Cell").Controls("ひらちん").Delete
End Sub
メニューを初期化する
メニューを初期状態に戻すには、Resetメソッドを実行します。
ただし、このメソッドは他のアドインなどが登録したメニューもすべて消えてしまうので注意してください。
CommandBars(“Cell”).Reset
Sub sample()
CommandBars("Cell").Reset
End Sub
登録する位置を指定する
メニューを登録するAddメソッドでは、登録する位置も指定出来ます。
引数の”Before”に数値を指定すると指定された数の位置にあるメニューの上に新しいメニューが作られます。
CommandBars(“Cell”).Controls.Add(Before)
2番目の位置に”ひらちん”というメニューを作成する場合は次のようになります。
Sub sample()
With CommandBars("Cell").Controls.Add(Before:=2)
.Caption = "ひらちん"
End With
End Sub
メニューに区切り線をつける
メニューの区切り線は「指定のメニューより下がグループの始まりだよ。」という命令で指定します。
例えば、一番上に”ひらちん”というメニューを作る前にもともと一番上にあるメニューから下がグループの始まりだよという命令を設定しておくことで、後で作られた”ひらちん”というメニューの下に区切り線が作成されることになります。
CommandBars(“Cell”).Controls(メニューの場所).BeginGroup = True
※消すときはFalse
Sub sample()
'一番上のメニューから下がグループの始まりと設定する
CommandBars("Cell").Controls(1).BeginGroup = True
'一番上に”ひらちん”というメニューを作成する
With CommandBars("Cell").Controls.Add(Before:=1)
.Caption = "ひらちん"
End With
End Sub
サブメニューを登録する
メニューにはサブメニューを作成することも出来ます。
CommandBars(“Cell”).Controls.Add(Type:=msoControlPopup)
メニューを作成するAddメソッドのType引数に”msoControlPopup”を指定したメニューに対して、更にAddメソッドでメニューを作成します。
そのように作成したメニューが、サブメニューとして表示されます。
一番上に”ひらちん”というメニューを作成して、更にサブメニューで”ひらちんサブ1”、”ひらちんサブ2”メニューを作成してみます。
Sub sample()
'一番上に”ひらちん”というメニューを作成
With CommandBars("Cell").Controls.Add(Before:=1, Type:=msoControlPopup)
'キャプション設定
.Caption = "ひらちん"
'サブメニュー作成
With .Controls.Add
.Caption = "ひらちんサブ1"
End With
With .Controls.Add
.Caption = "ひらちんサブ2"
End With
End With
End Sub
もちろん、ここで作ったサブメニューにも 「OnActionプロパティ」で自作のマクロを登録出来ます。
コメント