0

シナリオ

こんにちは、この MSDN ページにある手順を使用して、Excel ワークブックのセル コンテキスト メニュー (リボンではなく) にいくつかのカスタム コントロールを追加しようとしています。私が抱えている唯一の問題は、特定の列/セル範囲に対してのみアイテムを有効にする必要があることです。

私は周りを見回しましたが、これのための手順を見つけることができませんでした.VSTO開発(C#で書かれています)のためのものがありますが、それは私が必要とするものではありません. Office に組み込まれている VBA IDE を使用してこれを記述し、カスタム UI エディターを使用して XML を少し記述する予定です。


質問

したがって、基本的には、コンテキスト メニューが呼び出されたとき (つまり、右クリックしたとき) に、選択を検証して適切な列にあることを確認する関数を実行する方法を探しています。そうでない場合は、カスタム ボタンをグレー表示にしたいと思います。注:これは検証機能ではまったく行われない可能性があります。正直なところ、手がかりがありません。より良い方法があれば、遠慮なく共有してください (私は提案を受け付けています)。


PS

私のコードを書くように頼んでいるとは思わないでください。これらのボタンの作成は非常に簡単です。これまでに多くのボタンを作成してきました (すべてリボン アイテムでしたが)。

前もって感謝します!

4

1 に答える 1

1

これを試して:

Option Explicit

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

Dim rclk As CommandBarControl

If Target.Address(RowAbsolute:=False) = "$A1" Then
    Set rclk = Application.CommandBars("Cell").FindControl(Tag:="RightClickMenu1")
    With rclk
        .Enabled = False
    End With
Else
    Set rclk = Application.CommandBars("Cell").FindControl(Tag:="RightClickMenu1")
    With rclk
        .Enabled = True
    End With
End If

End Sub

「RightClickMenu1」は Workbook_Open() で作成されますが、それ以外のコードは自明だと思います。

于 2014-08-19T16:35:11.470 に答える