Я ищу способ зафиксировать щелчок на стандартной панели инструментов в Excel с VBA. Основная задача - захватить любой запрос на копирование, вырезание и вставку пользователем. Я могу получить горячие клавиши для этих функций, но не могу найти способ получить те же функции, когда пользователь нажимает значок на стандартной панели инструментов или когда пользователь использует меню для выбора функции.
1 ответ
0
Вот пример отмены от Джона Уокенбалька http://www.j-walk.com/ss/excel/tips/tip23.htm
Я также использовал макрос (вызывается событием worksheet_change), чтобы заставить пользователя «вставлять специальные».«Это должно дать вам хорошую отправную точку.
Sub pastefix()
Dim UndoString As String
Dim srce As Range
On Error GoTo err_handler
UndoString = _
Application.CommandBars("Standard").Controls("&Undo").List(1)
If Left(UndoString, 5) <> "Paste" And UndoString <> "Auto Fill" Then
Exit Sub
End If
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Undo
If UndoString = "Auto Fill" Then
Set srce = Selection
srce.Copy
ActiveCell.PasteSpecial _
Paste:=xlPasteValues, _
Operation:=xlNone, _
SkipBlanks:=False, _
Transpose:=False
Union(ActiveCell, srce).Select
Else
ActiveCell.PasteSpecial _
Paste:=xlPasteValues, _
Operation:=xlNone, _
SkipBlanks:=False, _
Transpose:=False
End If
Application.CutCopyMode = False
Application.ScreenUpdating = True
Application.EnableEvents = True
Exit Sub
err_handler:
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.CutCopyMode = False
End Sub