Excel VBAで右クリックメニューを追加する

Excel カスタマイズ

スポンサーリンク

はじめに

Excel VBAではなんと、作成したマクロを、Excelの右クリックメニューに追加することまでできてしまう。
といっても私も、そんなにそれを活用してるわけでもない。

普通は、個人用マクロブックのマクロだったら、クイックアクセスツールバーやリボンをカスタマイズして組み込めば済む。

Excel リボンはカスタマイズしまくろう。配置を無理に覚えようとしなくて良い

Excel2010以降 クイックアクセスツールバーのカスタマイズ

あるいは、マクロにショートカットキーを割り当てるという手もある。

Excel 個人用マクロブックPersonal.xlsbのマクロにショートカットキーを割り振る

また個人用マクロブックではなく個別のExcelブックに入れたマクロだったら、そのブックのシートに、マクロ起動用のボタンを配置すれば済む。

ということで、わざわざ右クリックメニューにマクロを登録する必要は、普通はあまりない。

そもそも、Excel作業を効率化していくためには、ショートカットキーなどを駆使してマウス離れしていくことが必要なので、右クリック自体を少なくしていかないといけないし。

どのようなマクロを右クリックメニューに登録するのか

では、どういうマクロを右クリックメニューに追加していけば良いのか。

私の考えとしては、「普段はほとんど使わないけど、特定の作業の時は結構使う」マクロを登録すれば良いのではないかと思う。

目的のセルが右端の方にある

例えば上図で黄色く塗ったセルは、右端の方にあるが、横長のシートで作業する際にはこれを、下図のように左端にスクロールさせたいということがある。

左端にスクロールしたもの

こういうとき、スクロールをパッとできる都合良いショートカットキーなどは意外とない(はず)もので、そういうのを右クリックメニューに登録したりしている。

そもそもExcelシートを横長に作ること自体が好ましくないので、こういうスクロール機能を使いたいという機会は少ないのだが、人から渡されたシートでたまにその機能がほしくなることがある。

だからこういうのが、先述の「普段はほとんど使わないけど、特定の作業の時は結構使う」メニューに該当するわけだ。

じゃあこれは右クリックメニューじゃなくてリボン・クイックアクセスツールバー・ショートカットキーじゃ駄目なのか?

もちろんそれらでも良いのだけど、クイックアクセスツールバーやリボンに組み込んだマクロも、普段使わないものはどこに組み込んだか分からなくなることが結構ある。
ショートカットキーなんて尚更、どんなコマンドに設定したか忘れるしね。

だから、普段は忘れていて気紛れで思い出したときに繰り返し使いたいマクロを、右クリックメニューに組み込めば良いと思う。

構文など

メニューを追加登録する

Excelの右クリックメニューのほか、ツールバーなどにマクロを登録するに当たっては

Application.CommandBars(○○).Controls.Add

という構文を使う。
○○には主に、

  • セルの右クリックメニューなら「”Cell“」
  • シート見出しの右クリックメニューなら「”Ply“」

といったものを入れる。

他に「”Worksheet Menu Bar”」といったものなら、リボンの「アドイン」タブ(とか、Excel2003時代のツールバー)にメニューを追加したりできるし他にも色々あるが、まあそういうのは気にしなくて良いだろう。

追加したメニューのリセットなど

右クリックメニューを5個追加するマクロを実行したとする。
そのとき追加された右クリックメニュー5個は、当然ながらというか次にExcelを起動した際も残り続ける。

更にもう一回マクロを実行すると、5個の右クリックメニューは再び追加されて、計10個登録されてしまい、どんどんメニューが増えてしまう。

追加した右クリックメニュー等は

Application.CommandBars(“Cell”).Reset

といった構文でリセットできるので、今回のマクロでは必ずそれで最初にメニューを初期化するようにしている。

その他

右クリックメニューの追加を行う基本構文

Application.CommandBars(○○).Controls.Add

の後には、主に次のような要素を盛り込む。

 
構文 内容
Caption = “現在行へスクロール” 右クリックメニューに表示させる、マクロの説明文
OnAction = “scrollCurrentRow” VBAで作成したマクロに付けた名前

また

BeginGroup = True

というのを書くと、メニューのグループを示すものとして区切り線が表示されるようになる。

ソースコード

それでは、右クリックメニューを追加するソースコードを示す。
今回サンプルとして、セルを右クリックしたときのメニューに追加したマクロは、次の4つで、どれも意外に有効なショートカットキーなどが標準機能には無いはず。

  1. 選択したセルがある列へスクロールする
  2. 選択したセルがある行へスクロールする
  3. セルの書式設定メニューで、文字の横位置を「標準」に設定する
  4. セルの書式設定メニューで、「文字の制御」を「縮小して全体を表示する」に設定する

 

セルでなくシート見出しを右クリックしたときのマクロも一応追加したが、このマクロ「breakLinksAndSheetCopy」については別の記事で紹介している。

Excel VBA リンクを解除するマクロ→リンク解除した上でシートを切り離す 個人用マクロブックに組み込んで使おう

上記ソースコードを個人用マクロブックに追加して、マクロ「addRightClickMenu」を実行すれば、下図のように右クリックメニューが追加されるはず。

他に、痒いところに手が届かないのを補えるマクロがあれば、こうやって右クリックメニューにどんどん追加していけば良いかと思う。

個人用マクロブックとかについては、ここを展開。

オリジナルのマクロをリボンに追加する方法はこちら

個人用マクロブックについては、こちらこちらで述べています。

 

スポンサーリンク