Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 禁用复制/粘贴_Excel_Vba - Fatal编程技术网

Excel 禁用复制/粘贴

Excel 禁用复制/粘贴,excel,vba,Excel,Vba,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.CellDragAn

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
Sub Button1_Click()
Sheets("Sheet1").Unprotect "Password"
Sheets("Sheet1").Range("A1") = InputBox("New value")
Sheets("Sheet1").Protect "Password"
End Sub
选项显式
子切换CutCopyAndPaste(允许为布尔值)
调用启用项(21,允许)
呼叫启用项(19,允许)
呼叫启用项(22,允许)
调用启用项(755,允许)
Application.celldragandrop=允许
应用
选择案例允许
Case=False
.OnKey“^c”,“CutCopyPasteDisabled”
.OnKey“^v”,“CutCopyPasteDisabled”
.OnKey“^x”,“CutCopyPasteDisabled”
.OnKey“+{DEL}”,“CutCopyPasteDisabled”
.OnKey“^{INSERT}”,“CutCopyPasteDisabled”
Case=True
.OnKey“^c”
.OnKey“^v”
.OnKey“^x”
.OnKey“+{DEL}”
.OnKey“^{INSERT}”
结束选择
以
端接头
子启用项(ctlId为整数,启用为布尔值)
作为命令栏的Dim cBar
Dim cBarCtrl作为CommandBarControl
对于Application.CommandBars中的每个cBar
如果cBar.Name为“剪贴板”,则
设置cBarCtrl=cBar.FindControl(ID:=ctlId,recursive:=True)
如果不是cBarCtrl,则cBarCtrl.Enabled=已启用
如果结束
下一个
端接头
子CutCopyPasteDisabled()
MsgBox“抱歉!此工作簿中已禁用剪切、复制和粘贴!”
端接头
但当我双击一个单元格,然后我可以在那里做任何事情,剪切,复制和粘贴


如何禁用复制粘贴,甚至双击单元格?

您可以使用以下方法保护工作表,例如:

Sheets("Sheet1").Protect "Password"
现在,用户无法选择或更改单元格中的值。 您还可以锁定单元格

您还可以在工作表中:

Sheets("Sheet1").Unprotect "Password"
在更改工作表之前(也通过VBA)需要执行此操作

编辑1:我不知道如何让用户仍然编辑单元格,但不复制粘贴其值。另一个“解决方案”是让用户通过表单输入数据。例如,我在工作表中添加了一个按钮:

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

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
Sub Button1_Click()
Sheets("Sheet1").Unprotect "Password"
Sheets("Sheet1").Range("A1") = InputBox("New value")
Sheets("Sheet1").Protect "Password"
End Sub

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

您可以使用以下方法保护工作表,例如:

Sheets("Sheet1").Protect "Password"
现在,用户无法选择或更改单元格中的值。 您还可以锁定单元格

您还可以在工作表中:

Sheets("Sheet1").Unprotect "Password"
在更改工作表之前(也通过VBA)需要执行此操作

编辑1:我不知道如何让用户仍然编辑单元格,但不复制粘贴其值。另一个“解决方案”是让用户通过表单输入数据。例如,我在工作表中添加了一个按钮:

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

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
Sub Button1_Click()
Sheets("Sheet1").Unprotect "Password"
Sheets("Sheet1").Range("A1") = InputBox("New value")
Sheets("Sheet1").Protect "Password"
End Sub
现在,用户只能更改该单元格的值,在本例中为A1。

这可能有帮助吗

在Thisworkbook(代码)页面中输入此信息

Private子工作簿\u双击前的工作表(ByVal Sh作为对象,ByVal Target作为范围,Cancel作为布尔值)
取消=真
MsgBox“双击已禁用!”
端接头
这可能会有帮助吗

在Thisworkbook(代码)页面中输入此信息

Private子工作簿\u双击前的工作表(ByVal Sh作为对象,ByVal Target作为范围,Cancel作为布尔值)
取消=真
MsgBox“双击已禁用!”
端接头

请不要!复制粘贴是最支持用户的操作。你可能不会阻止它几乎总是有黑客的方法来提取文本是的,但我有一段时间需要它。上面的代码正在运行。只有我不能阻止使用双击。通常情况下,它的显示被禁用,只是双击单元格后它不工作。请查看示例文件以了解您的信息,不要!复制粘贴是最支持用户的操作。你可能不会阻止它几乎总是有黑客的方法来提取文本是的,但我有一段时间需要它。上面的代码正在运行。只有我不能阻止使用双击。通常情况下,它的显示被禁用,只是双击单元格后它不工作。请查看示例文件以获取您的信息@aglod,谢谢您的回复。我的要求是用户可以编辑和添加任何文本到任何单元格。我只想禁用复制粘贴。用户无法复制、粘贴到工作表中。对不起,我无法清除。您能添加任何工作表样本吗?@aglod,谢谢您的回复。我的要求是用户可以编辑和添加任何文本到任何单元格。我只想禁用复制粘贴。用户无法复制、粘贴到工作表中。对不起,我无法清除。是否可以添加任何示例工作表?当用户限制或禁用其Excel应用程序中的VBA时-这不会被忽略?当用户限制或禁用其Excel应用程序中的VBA时-这不会被忽略?