Carl Carl
Carl Carl

Reputation: 13

Excel VBA - Disabling copy/cut-paste in workbook

I'm trying to find a way to prevent copy/cut-pasting in excel cells. I disabled copy/pasting of cells however found a flaw that if a user copies the actual value of the cell he's able to paste thus(In only 1 cell not a range of cells) making the disabled copy/paste useless.

I used the following line of code from another question:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.CutCopyMode = False

Dim UndoList As String

With Application
    .EnableEvents = False
    .ScreenUpdating = False
End With

On Error GoTo ErrExit
UndoList = Application.CommandBars("Standard").Controls("&Undo").List(1)
If Left(UndoList, 5) = "Paste" Or UndoList = "Auto Fill" Then
    MsgBox "Please don't paste values on this sheet." & vbCr & _
           "The action will be reversed.", vbInformation, _
           "Paste is not permitted"
    With Application
        .Undo
        .CutCopyMode = False
    End With
    Target.Select
End If

ErrExit:
With Application
    .ScreenUpdating = True
    .EnableEvents = True
End With
End Sub

Upvotes: 0

Views: 2780

Answers (1)

nagarajannd
nagarajannd

Reputation: 715

How about using Application.Onkey.

Sub DisableCutCopyPaste()
Application.OnKey "^{c}", "" 'Copy
Application.OnKey "^{v}", "" 'Paste
Application.OnKey "^{x}", "" 'Cut
End Sub

Upvotes: 1

Related Questions