Option Explicit
Sub EnableControl(Id As Integer, Enabled As Boolean)
Dim CB As CommandBar
Dim C As CommandBarControl
For Each CB In Application.CommandBars
Set C = CB.FindControl(Id:=Id, recursive:=True)
If Not C Is Nothing Then C.Enabled = Enabled
Next
End Sub
Private Sub Workbook_Activate()
' Die Befehlsschaltflächen deaktivieren
EnableControl 21, False ' Ausschneiden (cut)
EnableControl 19, False ' Kopieren (copy)
EnableControl 22, False ' Einfügen (paste)
EnableControl 755, False ' Inhalte Einfügen (pastespecial)
' Tastenkombinationen abfangen
Application.OnKey "^c", "" ' STRG + c kopieren abfangen (copy)
Application.OnKey "^v", "" ' STRG + v einfügen abfangen (cut)
Application.OnKey "^x", "" ' STRG + x ausschneiden abfangen (cut)
Application.OnKey "+{DEL}", "" ' SHIFT + ENTF auschneiden abfangen (cut)
Application.OnKey "+{INSERT}", "" ' SHIFT + EINFG einfügen abfangen (paste)
' Zellen mit dem Randanfasser verschieben, kopieren verhindern
Application.CellDragAndDrop = False
End Sub
Private Sub Workbook_Open()
' Die Befehlsschaltflächen deaktivieren
EnableControl 21, False ' Ausschneiden (copy)
EnableControl 19, False ' Kopieren (copy)
EnableControl 22, False ' Einfügen (paste)
EnableControl 755, False ' '
' Tastenkombinationen abfangen
Application.OnKey "^c", "" ' STRG + c Kopieren (copy)
Application.OnKey "^v", "" ' STRG + v (cut)
Application.OnKey "^x", "" ' STRG + x (paste)
Application.OnKey "+{DEL}", "" ' SHIFT + ENTF (cut)
Application.OnKey "+{INSERT}", "" ' SHIFT + EINFG (paste)
' Zellen mit dem Randanfasser verschieben, kopieren wieder ermöglichen
Application.CellDragAndDrop = False
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
' Die Befehlsschaltflächen wieder aktivieren
EnableControl 21, True ' Ausschneiden (cut)
EnableControl 19, True ' Kopieren (copy)
EnableControl 22, True ' Einfügen (paste)
EnableControl 755, True ' pastespecial
' Tastenkombinationen abfangen
Application.OnKey "^c" ' STRG + c (copy)
Application.OnKey "^v" ' STRG + v (cut)
Application.OnKey "^x" ' STRG + x (cut)
Application.OnKey "+{DEL}" ' SHIFT + ENTF (cut)
Application.OnKey "+{INSERT}" ' SHIFT + EINFG (paste)
' Zellen mit dem Randanfasser verschieben, kopieren wieder ermöglichen
Application.CellDragAndDrop = True
End Sub
Private Sub Workbook_Deactivate()
' Die Befehlsschaltflächen wieder aktivieren
EnableControl 21, True ' Kopieren (copy)
EnableControl 19, True ' Kopieren (copy)
EnableControl 22, True ' Einfügen (paste)
EnableControl 755, True ' ' Inhalte Einfügen (pastespecial)
' Tastenkombinationen wieder einschalten
Application.OnKey "^c" ' STRG + c Kopieren (copy)
Application.OnKey "^v" ' STRG + v Einfügen (paste)
Application.OnKey "^x" ' STRG + v ausschneiden (cut)
Application.OnKey "+{DEL}" ' SHIFT + ENTF (cut)
Application.OnKey "+{INSERT}" ' SHIFT + EINFG (paste)
' Zellen mit dem Randanfasser verschieben, kopieren wieder ermöglichen
Application.CellDragAndDrop = True
End Sub