Щелкните правой кнопкой мыши, чтобы скопировать не работает должным образом
У меня есть текстовое поле, в котором я хотел бы включить функцию щелчка правой кнопкой мыши для копирования.
У меня есть код ниже (благодаря интернету), но, хотя он показывает меню, кажется, ничто не делает его в буфер обмена.
В модуле 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
Есть несколько способов добиться того, чего вы хотите. Из быстрого поиска в сети, если вы хотите лучше оценить это, вы можете взглянуть на следующее:
- http://www.mrexcel.com/forum/excel-questions/383230-rightclick-context-menu-userform-textbox.html
- http://dailydoseofexcel.com/archives/2004/12/07/using-copypaste-in-userforms/
Первый достаточно прост, а второму нужно немного больше "навыков", чтобы понять.
Первый, вероятно, достаточно хорош для того, что вы делаете, и реализует дополнительные операции, такие как Cut
, Paste
, Select All
, так далее.