Совет. Другие языки - Google-Translated. Вы можете посетить English версия этой ссылки.
Войти
x
or
x
x
Регистрация
x

or

Как добавить пользовательскую кнопку в контекстное меню правой кнопки мыши в контекстном меню Excel?

Как показано ниже, многие люди склонны добавлять свои часто используемые функции в контекстное меню Excel, чтобы быстро использовать эти функции одним щелчком мыши в будущем. В этой статье говорится о добавлении кнопки пользовательского кода в меню правой кнопки мыши в Excel.

Добавить пользовательскую кнопку в контекстное меню в Excel с кодом VBA


arrow синий правый пузырьДобавить пользовательскую кнопку в контекстное меню в Excel с кодом VBA


Предположим, что вы создали сценарий VBA с именем MyMacro в Excel, и теперь вам нужно добавить эту функцию в контекстное меню для запуска кода, просто щелкнув по нему. Пожалуйста, сделайте следующее.

1. нажмите другой + F11 , чтобы открыть Microsoft Visual Basic для приложений окна.

2. в Microsoft Visual Basic для приложений окно, двойной щелчок ThisWorkbook слева проект панель. А затем скопируйте и вставьте следующий код VBA в Эта книга (код) окна.

Код VBA: добавьте настраиваемую кнопку в контекстное меню в Excel

Private Sub Workbook_Deactivate()
    On Error Resume Next
        With Application
            .CommandBars("Cell").Controls("MyMacro").Delete
        End With
    On Error GoTo 0
End Sub

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    Dim cmdBtn As CommandBarButton
    On Error Resume Next
        With Application
            .CommandBars("Cell").Controls("MyMacro").Delete
            Set cmdBtn = .CommandBars("Cell").Controls.Add(Temporary:=True)
        End With

        With cmdBtn
           .Caption = "MyMacro"
           .Style = msoButtonCaption
           .OnAction = "MyMacro"
        End With
    On Error GoTo 0
End Sub

Внимание: В коде, пожалуйста, замените все «MyMacro» с именем Macro, которое вы создали в Excel.

3. нажмите другой + Q для выхода из Microsoft Visual Basic для приложений окна.

Теперь вы вернетесь в интерфейс Excel, щелкнув правой кнопкой мыши по ячейке, вы увидите, что новая кнопка с указанным именем добавляется в контекстное меню, как показано ниже. Нажмите кнопку, чтобы сразу вызвать соответствующий макрос.


arrow синий правый пузырьСтатьи по теме:



Рекомендуемые инструменты для повышения производительности в Excel

Kutools для Excel помогает всегда завершать работу раньше времени и выделяться из толпы

  • Больше, чем мощные расширенные функции 300, разработанные для рабочих сценариев 1500, повышающие производительность на 70%, дают вам больше времени, чтобы заботиться о семье и радоваться жизни.
  • Больше не нужно запоминать формулы и коды VBA, дайте вашему мозгу отдохнуть.
  • Станьте экспертом по Excel за минуты 3. Сложные и повторяющиеся операции можно выполнить за считанные секунды,
  • Ежедневно сокращайте тысячи операций с клавиатурой и мышью, попрощайтесь с профессиональными заболеваниями сейчас.
  • Высокоэффективные люди 110,000 и выбор всемирно известных компаний 300 +.
  • 60-Day полнофункциональная бесплатная пробная версия. 60-день гарантии возврата денег. 2 лет бесплатного обновления и поддержки.

Обеспечивает просмотр и редактирование с помощью вкладок в Microsoft Office, гораздо более мощный, чем вкладки браузера

  • Вкладка Office предназначена для Word, Excel, PowerPoint и других приложений Office: Publisher, Access, Visio и Project.
  • Открывайте и создавайте несколько документов в новых вкладках одного и того же окна, а не в новых окнах.
  • Увеличивает вашу производительность на 50% и уменьшает сотни щелчков мышью для вас каждый день!
Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    MFouad · 8 months ago
    Thanks
    Does that working for all workbooks even after restarting Excel, or only for the selected workbook which saved the macro in?
    • To post as a guest, your comment is unpublished.
      Виктор · 1 months ago
      Размести код в отдельном модуле, для того чтобы это работало для всех документов
    • To post as a guest, your comment is unpublished.
      crystal · 8 months ago
      Hi,
      It only works for the workbook which save the macro in. Thank you for your comment.
  • To post as a guest, your comment is unpublished.
    Vic · 1 years ago
    Add VBA button to context menu works well. Thanks. How do I add more buttons ? (not good at VBA, hence the question).
    • To post as a guest, your comment is unpublished.
      crystal · 8 months ago
      Hi Vic,
      The following VBA code can help you solve the problem, please have a try.

      Private Sub Workbook_Deactivate()
      Dim xArrB As Variant
      Dim xFNum As Integer
      Dim xStr As String
      On Error Resume Next
      With Application
      xArrB = Array("MyMacro01", "MyMacro02", "MyMacro03")
      For xFNum = 0 To UBound(xArrB)
      xStr = xArrB(xFNum)
      .CommandBars("Cell").Controls(xStr).Delete
      Next xFNum
      End With
      On Error GoTo 0
      End Sub

      Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
      Dim cmdBtn As CommandBarButton
      Dim xArrB As Variant
      Dim xFNum As Integer
      Dim xStr As String
      On Error Resume Next
      xArrB = Array("MyMacro01", "MyMacro02", "MyMacro03")
      For xFNum = 0 To UBound(xArrB)
      xStr = xArrB(xFNum)
      With Application
      .CommandBars("Cell").Controls(xStr).Delete
      Set cmdBtn = .CommandBars("Cell").Controls.Add(Temporary:=True)
      End With
      With cmdBtn
      .Caption = xStr
      .Style = msoButtonCaption
      .OnAction = xStr
      End With
      Next xFNum
      On Error GoTo 0
      End Sub
      • To post as a guest, your comment is unpublished.
        Mike · 4 months ago
        This doesn't work for me, I have done exactly the same as the above macro with only one menu, Does it work for anyone else or am I doing something wrong?

        Thanks