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

1 ответ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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .