0

すべてのビルトイン セル コンテキスト メニュー機能のコードにアクセスする方法はありますか?

具体的には、RightClick コンテキスト メニューから「AddComment」機能を実行しようとしていますが、カスタム コンテキスト メニューを作成しました。

コメントを追加するだけではありません。コメントを開き、自分の名前を追加して選択します。いいですね、その機能をカスタム コンテキスト メニューに適用したいと思います。したがって、その関数のコードを把握するか、カスタム コンテキスト メニューから関数自体を「呼び出す」必要があります。

編集: もっと具体的にする必要があると思います:

  • 「コメントの挿入」と呼ばれる標準操作は、セルの右クリック コンテキスト メニューにあります。
  • その関数を独自の (カスタム) 右クリック コンテキスト メニューにコピーしたいと考えています。
  • すべての組み込み関数の実際のコードを Excel で確認できる場所はありますか? たとえば、これらの右クリック機能について話しています。

したがって、コンテキスト メニューをハイジャックしたくありません。使いたい!しかし、元の右クリック コンテキスト メニューから関数を挿入したいカスタムの右クリック コンテキスト メニューを作成しました。

4

2 に答える 2

0

VBA を使用して、通常のセル コンテキスト メニューからほぼすべての操作を実行できるはずです。記録マクロを使用している場合は、メニューをクリックしてコードを表示し、何が記録されたかを確認できます。たとえば、コメントを挿入するためのマクロ記録は、このコードを生成します....

Range("A1").Select
Range("A1").AddComment
Range("A1").Comment.Visible = False
Range("A1").Comment.Text Text:="Your Name:" & Chr(10) & ""

編集
デフォルトのコンテキストメニュー操作に対応するVBAコードを取得する方法を尋ねたので、最初はOPを理解していなかったと思います。実際に求められているのは、組み込みのコンテキスト メニュー操作自体を「ハイジャック」する方法だと思います。Ambie がコメントしたように、これは以下に示すように実行できます。

Sub HijackContextMenuInsertComment()
    Dim ContextMenu As CommandBar
    Set ContextMenu = Application.CommandBars("Cell")
    ContextMenu.Controls.Item(13).OnAction = "Test"
End Sub
Sub Test()
    MsgBox "I've been hijacked"
End Sub
于 2015-12-01T14:05:24.003 に答える
0

考えられる回避策:

ステップバイステップ:

  • デフォルトのコンテキスト メニューを使用する
  • 「コメントを挿入」以外のすべての項目を削除します
  • カスタム関数をコンテキスト メニューに追加する
  • これで、すべての独自の機能と「コメントの挿入」機能が必要になりました。

これを機能させるには、次のコードを追加するだけです。

Dim Cnt As CommandBarControl
With Application.CommandBars("Cell")
    For Each Cnt In .Controls
        If InStr(1, Cnt.Caption, "Infoga ko") = 0 Then Cnt.Delete
    Next Cnt
End with

キャプションは言語ごとに異なりますのでご注意ください。私はスウェーデン語でそれを持っているので、英語では "Infoga ko" の代わりに "Insert c" で動作するかもしれません.

正しいキャプションを取得するために、次のようにすべてのコントロールをループできます。

For Each Cnt In .Controls
    Debug.Print Cnt.Caption
Next Cnt

このコードを実行すると、「コメントの挿入」機能だけが残り、独自のコントロールの追加を開始できます。

更新: いいえ、これは機能していません。関数は実行されません。「コメントの挿入」機能をクリックしても何も起こりません。変?

于 2015-12-02T05:41:58.567 に答える