Borrowing from Excel VBA How to detect if something was pasted in a Worksheet. The Workbook_SheetChange
event will fire for any change event on the page, including a paste.
From inside this event, you can then check if the last change was a paste by looking at the most recent entry in the Undo List History:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim lastAction As String
' Get the last action performed by user
lastAction = Application.CommandBars("Standard").Controls("&Undo").List(1)
' Check if the last action was a paste
If Left(lastAction, 5) = "Paste" Then
' Do Stuff Here
End If
End Sub