禁用复制/粘贴

用户名

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:我不知道如何让用户仍然编辑单元格,但不能复制粘贴它们的值。对此的另一个“解决方案”可能是让用户通过表单输入数据。作为示例,我在工作表中添加了一个按钮:

添加excel按钮

(注意:如果看不到“开发人员”选项卡,则必须添加它。)现在,将询问您要为其分配哪个宏,请选择“新建”现在,您可以使用以下代码填充分配给按钮的子(宏):

Sub Button1_Click()
Sheets("Sheet1").Unprotect "Password"
Sheets("Sheet1").Range("A1") = InputBox("New value")
Sheets("Sheet1").Protect "Password"
End Sub

现在,用户只能更改该单元格的值,在此示例中为A1。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章