コンテキストメニューへのアイテムの追加(Microsoft Excel)
セルを右クリックすると、Excelには機能豊富なコンテキストメニューが表示され、さまざまな操作を実行できます。特に頻繁に使用する機能である場合は、そのコンテキストメニューにいくつかの機能を追加することをお勧めします。
残念ながら、[ツール]メニューの[カスタマイズ]を使用して、他のメニューを編集するのと同じ方法でコンテキストメニューを編集することはできません。代わりに、VBAを介してコンテキストメニューを操作する必要があります。
セルを右クリックしたときに表示されるコンテキストメニューに項目を追加する場合は、次のコードを使用できます。
Sub AddItemToContextMenu() Dim cmdNew As CommandBarButton Set cmdNew = CommandBars("cell").Controls.Add With cmdNew .Caption = "My Procedure" .OnAction = "MyProcedure" .BeginGroup = True End With End Sub
Sub RemoveContextMenuItem() On Error Resume Next CommandBars("cell").Controls("My Procedure").Delete End Sub
これを使用するには、「MyProcedure」テキストを前のマクロの.Captionプロパティで使用したテキストに変更します。指定されたマクロ項目が以前に追加されていない場合に備えて、このマクロではOnErrorステートメントが使用されます。
マクロを少し変更することで、特定のセルを右クリックしたときにのみコンテキストメニューへの追加が行われるように指定できます。次のマクロは、C10:E25の範囲のセルをクリックしているかどうかを確認します。そうである場合は、コンテキストメニューの最後にプロシージャのメニューオプションが追加されます。
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, _ Cancel As Boolean) Dim cmdNew As CommandBarButton For Each icbc In Application.CommandBars("cell").Controls If icbc.Tag = "brccm" Then icbc.Delete Next icbc If Not Application.Intersect(Target, Range("c10:e25")) _ Is Nothing Then Set cmdNew = CommandBars("cell").Controls.Add With cmdNew .Caption = "My Procedure" .OnAction = "MyProcedure" .BeginGroup = True .Tag = "brccm" End With End If End Sub
VBAエディターで、このマクロを使用する特定のワークシートに追加する必要があります。プロジェクトエクスプローラー(VBAエディターの左上隅)でそのワークシートをダブルクリックし、そのワークシートのコードウィンドウに入力するだけです。
以前のマクロと同様に、必要なのは.Captionプロパティと.OnActionプロパティに指定された設定を変更することだけです。さらに、メニュー選択を追加するときに「有効」と見なされるセル範囲を変更することもできます。「c:10:e25」範囲の指定を目的の範囲に変更するだけです。セル範囲の代わりに名前付き範囲を使用することもできます。これは、有効な範囲が実際には連続していないセルのセットである場合に最適です。
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(2064)は、Microsoft Excel 97、2000、2002、および2003に適用されます。