Excel中的禁用复制粘贴正在使用以下代码:
Option Explicit
Sub ToggleCutCopyAndPaste(Allow As Boolean)
Call EnableMenuItem(21, Allow)
Call EnableMenuItem(19, Allow)
Call EnableMenuItem(22, Allow)
Call EnableMenuItem(755, Allow)
Application.CellDragAndDrop = Allow
With Application
Select Case Allow
Case Is = False
.OnKey "^c", "CutCopyPasteDisabled"
.OnKey "^v", "CutCopyPasteDisabled"
.OnKey "^x", "CutCopyPasteDisabled"
.OnKey "+{DEL}", "CutCopyPasteDisabled"
.OnKey "^{INSERT}", "CutCopyPasteDisabled"
Case Is = True
.OnKey "^c"
.OnKey "^v"
.OnKey "^x"
.OnKey "+{DEL}"
.OnKey "^{INSERT}"
End Select
End With
End Sub
Sub EnableMenuItem(ctlId As Integer, Enabled As Boolean)
Dim cBar As CommandBar
Dim cBarCtrl As CommandBarControl
For Each cBar In Application.CommandBars
If cBar.Name <> "Clipboard" Then
Set cBarCtrl = cBar.FindControl(ID:=ctlId, recursive:=True)
If Not cBarCtrl Is Nothing Then cBarCtrl.Enabled = Enabled
End If
Next
End Sub
Sub CutCopyPasteDisabled()
MsgBox "Sorry! Cutting, copying and pasting have been disabled in this workbook!"
End Sub
但是当我双击一个单元格时,我可以在那里剪切,复制和粘贴任何内容。
如何禁用复制粘贴甚至双击到单元格中?
您可以使用来保护工作表Worksheet.Protect
,例如:
Sheets("Sheet1").Protect "Password"
现在,用户无法选择或更改单元格中的值。您也可以手动锁定单元格。
您还可以Unprotect
工作表:
Sheets("Sheet1").Unprotect "Password"
在更改工作表之前(也可以通过VBA),您需要执行此操作。
编辑1:我不知道如何让用户仍然编辑单元格,但不能复制粘贴它们的值。对此的另一个“解决方案”可能是让用户通过表单输入数据。作为示例,我在工作表中添加了一个按钮:
(注意:如果看不到“开发人员”选项卡,则必须添加它。)现在,将询问您要为其分配哪个宏,请选择“新建”。现在,您可以使用以下代码填充分配给按钮的子(宏):
Sub Button1_Click()
Sheets("Sheet1").Unprotect "Password"
Sheets("Sheet1").Range("A1") = InputBox("New value")
Sheets("Sheet1").Protect "Password"
End Sub
现在,用户只能更改该单元格的值,在此示例中为A1。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句