Щелкните правой кнопкой мыши, чтобы скопировать не работает должным образом

У меня есть текстовое поле, в котором я хотел бы включить функцию щелчка правой кнопкой мыши для копирования.

У меня есть код ниже (благодаря интернету), но, хотя он показывает меню, кажется, ничто не делает его в буфер обмена.

В модуле 1:

Sub MakePopUp()
'Remove any old instance of MyPopUp
On Error Resume Next
CommandBars("MyPopUp").Delete
On Error GoTo 0

With CommandBars.Add(name:="MyPopUp", Position:=msoBarPopup)
    .Controls.Add Type:=msoControlButton, ID:=19
End With
End Sub

На моем пользовательском текстовом поле:

Private Sub ResultsBox_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As     Single, ByVal Y As Single)
MakePopUp
    If Button = 2 Then
    Application.CommandBars("MyPopUp").ShowPopup
End If
End Sub

Я что-то здесь пропускаю? Спасибо

1 ответ

Решение

Боюсь, вы упускаете маленький, но довольно важный кусок. Вы никогда не говорили коду, что делать, когда нажимаете Copy пункт меню, поэтому в результате ничего не происходит.

Чтобы решить эту проблему, в Module1 замените эту строку:

.Controls.Add Type:=msoControlButton, ID:=19

с этим:

.Controls.Add(Type:=msoControlButton, ID:=19).OnAction = "Textbox_Copy"

Тогда еще в Module1, добавьте следующий Sub, который реализует Textbox_Copy действие, которое мы упоминали выше. Я предполагаю, что ваша пользовательская форма называется UserForm1, поэтому вы должны изменить имя, если имя отличается.

Public Sub Textbox_Copy()
  UserForm1.ResultsBox.Copy
End Sub

Есть несколько способов добиться того, чего вы хотите. Из быстрого поиска в сети, если вы хотите лучше оценить это, вы можете взглянуть на следующее:

Первый достаточно прост, а второму нужно немного больше "навыков", чтобы понять.

Первый, вероятно, достаточно хорош для того, что вы делаете, и реализует дополнительные операции, такие как Cut, Paste, Select All, так далее.

Другие вопросы по тегам