此方法只会禁用本工作薄的“剪切”功能,不会影响其他工作薄使用“剪切”功能。而对于工作表之间,也可以类似使用。
其思路为:当工作薄被激活(Activate)时,进行禁用某些功能,当切换到别的工作薄后(Deactivate)解除相应的禁用。当然关闭本工作薄前(BeforeClose)也该解除禁用。
代码如下:复制到ThisWorkBook代码区(在office 2003 正常,在office xp等版本设置可能有所不同)
Private Sub Workbook_Activate() '本工作薄激活时,相应地禁用“剪切”
'禁用菜单栏"剪切",里面的序号代表位置,2和3是2003里的,XP中应该不同,自己修改
Application.CommandBars(1).Controls(2).Controls(3).Enabled = False
'禁用右键中的"剪切",序号1代表第一个选择,2代表复制(这是我的,自己修改你自己的)
Application.CommandBars("cell").Controls(1).Enabled = False
'禁用键盘"Ctrl+x",恢复方法:Application.OnKey "^x"
Application.OnKey "^x", ""
'禁用移动(会把拖动也禁用)
Application.CellDragAndDrop = False
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean) '关闭前 解除
'解除禁用
Application.CommandBars(1).Controls(2).Controls(3).Enabled = True
Application.CommandBars("cell").Controls(1).Enabled = True
Application.OnKey "^x"
Application.CellDragAndDrop = True
End Sub
Private Sub Workbook_Deactivate() '本工作薄失去焦点时,相应地解除禁用
'解除禁用
Application.CommandBars(1).Controls(2).Controls(3).Enabled = True
Application.CommandBars("cell").Controls(1).Enabled = True
Application.OnKey "^x"
Application.CellDragAndDrop = True
End Sub
Private Sub Workbook_Open() '打开时, 禁用“剪切”
'禁用菜单栏"剪切",里面的序号代表位置,2和3是2003里的,XP中应该不同,自己修改
Application.CommandBars(1).Controls(2).Controls(3).Enabled = False
'禁用右键中的"剪切",序号1代表第一个选择,2代表复制(这是我的,自己修改你自己的)
Application.CommandBars("cell").Controls(1).Enabled = False
'禁用键盘"Ctrl+x",恢复方法:Application.OnKey "^x"
Application.OnKey "^x", "" '禁用移动(会把拖动也禁用)
Application.CellDragAndDrop = False
End Sub