Disable CUT via toolbars or shortcut keys

S

sparx

Hello all, If you need to disable the "CUT" feature of Excel within a
worksheet then the following works fine. The code disables the "CUT"
while you are within your file and restores the "CUT" function when you
exit your file - it stops cutting using shortcut keys or toolbar
functions. Please feel free to use the following - if you find you can
make the following VBA code better please feel free to reply to this
thread.

-- Place the following VBA in the "ThisWorkbook" area --

Private Sub Workbook_Open()

Run "DisableCut"
Run "Find_Disable_Commands"

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Run "EnableCut"
Run "Find_Enable_Commands"

End Sub

-- Place the following VBA in a new Module --

Sub DisableCut()
On Error Resume Next
With Application
'disables shortcut keys
..OnKey "^x", ""
'Disables Cut
..CommandBars("Standard").FindControl(ID:=21).Enabled = False
..CommandBars("Edit").FindControl(ID:=21).Enabled = False
..CommandBars("Cell").FindControl(ID:=21).Enabled = False
..CommandBars("Column").FindControl(ID:=21).Enabled = False
..CommandBars("Row").FindControl(ID:=21).Enabled = False
..CommandBars("Button").FindControl(ID:=21).Enabled = False
..CommandBars("XLM Cell").FindControl(ID:=21).Enabled = False
..CommandBars("Formula Bar").FindControl(ID:=21).Enabled = False
..CommandBars("Query").FindControl(ID:=21).Enabled = False
..CommandBars("Query Layout").FindControl(ID:=21).Enabled = False
..CommandBars("Object/Plot").FindControl(ID:=21).Enabled = False
..CommandBars("Phonetic Information").FindControl(ID:=21).Enabled =
False
..CommandBars("Shapes").FindControl(ID:=21).Enabled = False
..CommandBars("Inactive Chart").FindControl(ID:=21).Enabled = False
..CommandBars("ActiveX Control").FindControl(ID:=21).Enabled =
False
..CommandBars("OLE Object").FindControl(ID:=21).Enabled = False
..CommandBars("Excel Control").FindControl(ID:=21).Enabled = False
..CommandBars("WordArt Contex Menu").FindControl(ID:=21).Enabled =
False
..CommandBars("Curve").FindControl(ID:=21).Enabled = False
..CommandBars("Pictures Contex Menu").FindControl(ID:=21).Enabled =
False
..CommandBars("Rotate Mode").FindControl(ID:=21).Enabled = False
..CommandBars("Connector").FindControl(ID:=21).Enabled = False
..CommandBars("Script Anchor Popup").FindControl(ID:=21).Enabled =
False
..CommandBars("Worksheet Menu Bar").FindControl(ID:=21).Enabled =
False
End With
End Sub

Sub EnableCut()
On Error Resume Next
With Application
'enables shortcut keys
..OnKey "^x"
'Enables Cut
..CommandBars("Standard").FindControl(ID:=21).Enabled = True
..CommandBars("Edit").FindControl(ID:=21).Enabled = True
..CommandBars("Cell").FindControl(ID:=21).Enabled = True
..CommandBars("Column").FindControl(ID:=21).Enabled = True
..CommandBars("Row").FindControl(ID:=21).Enabled = True
..CommandBars("Button").FindControl(ID:=21).Enabled = True
..CommandBars("XLM Cell").FindControl(ID:=21).Enabled = True
..CommandBars("Formula Bar").FindControl(ID:=21).Enabled = True
..CommandBars("Query").FindControl(ID:=21).Enabled = True
..CommandBars("Query Layout").FindControl(ID:=21).Enabled = True
..CommandBars("Object/Plot").FindControl(ID:=21).Enabled = True
..CommandBars("Phonetic Information").FindControl(ID:=21).Enabled =
True
..CommandBars("Shapes").FindControl(ID:=21).Enabled = True
..CommandBars("Inactive Chart").FindControl(ID:=21).Enabled = True
..CommandBars("ActiveX Control").FindControl(ID:=21).Enabled = True
..CommandBars("OLE Object").FindControl(ID:=21).Enabled = True
..CommandBars("Excel Control").FindControl(ID:=21).Enabled = True
..CommandBars("WordArt Contex Menu").FindControl(ID:=21).Enabled =
True
..CommandBars("Curve").FindControl(ID:=21).Enabled = True
..CommandBars("Pictures Contex Menu").FindControl(ID:=21).Enabled =
True
..CommandBars("Rotate Mode").FindControl(ID:=21).Enabled = True
..CommandBars("Connector").FindControl(ID:=21).Enabled = True
..CommandBars("Script Anchor Popup").FindControl(ID:=21).Enabled =
True
..CommandBars("Worksheet Menu Bar").FindControl(ID:=21).Enabled =
True
End With
End Sub

Sub Find_Disable_Commands()
Dim myControls As CommandBarControls
Dim ctl As CommandBarControl
Set myControls = CommandBars.FindControls _
(Type:=msoControlButton, ID:=21) '21 = cut
For Each ctl In myControls
ctl.Enabled = False
Next ctl
End Sub

Sub Find_Enable_Commands()
Dim myControls As CommandBarControls
Dim ctl As CommandBarControl
Set myControls = CommandBars.FindControls _
(Type:=msoControlButton, ID:=21) '21 = cut
For Each ctl In myControls
ctl.Enabled = True
Next ctl
End Sub

Save the file then re-start Excel and the "CUT" should be disabled.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top