Excel 禁用复制/粘贴
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
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时-这不会被忽略?