禁用格式,而在Excel中复制粘贴操作

我使用下面的代码来禁用单元格复制粘贴操作时的格式化 –

Private Sub Worksheet_Change(ByVal Target As Range) With Application .EnableEvents = False myValue = Target.Formula .Undo Target.Formula = myValue .EnableEvents = True End With End If Application.CutCopyMode = False End Sub 

代码工作完美,但它在工作表中插入许多其他问题。

  1. 无法使用撤销/重做function
  2. 无法单击更改单元格的焦点。

任何想法将不胜感激。

本质上,你想禁止一个标准的粘贴,并可能用一个粘贴特殊/值来replace它

您可以捕获粘贴function,并指定一个消息告诉用户使用select性粘贴特殊/值,如

 .... ' place this in any suitable event trigger like Application.CommandBars("Edit").Controls("Paste").OnAction = "TrappedPaste" .... Sub TrappedPaste() MsgBox "Your Paste is performed as PasteSpecialValues", vbOKOnly, "Paste" ' ok, now silently do a PasteSpecial/Values On Error GoTo TryExcel ' try to paste text ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:=False Exit Sub TryExcel: On Error GoTo DoesntWork Selection.PasteSpecial xlPasteValues Exit Sub DoesntWork: MsgBox "Sorry - wrong format for pasting", vbExclamation + vbOKOnly, "Paste Problem" End Sub 

小心……这不适用于所有语言,因此对于国际应用,我们需要更加低调

 If ExistControl("Edit", 22) Then Application.CommandBars("Edit").FindControl(ID:=22).OnAction = "TrappedPaste" 

而且在应用程序中有更多的地方可以让用户获得“粘​​贴”,你需要把它们全部收集起来。

如果你喜欢这个方法,我可以进一步阐述。