禁用格式,而在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
代码工作完美,但它在工作表中插入许多其他问题。
- 无法使用撤销/重做function
- 无法单击更改单元格的焦点。
任何想法将不胜感激。
本质上,你想禁止一个标准的粘贴,并可能用一个粘贴特殊/值来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"
而且在应用程序中有更多的地方可以让用户获得“粘贴”,你需要把它们全部收集起来。
如果你喜欢这个方法,我可以进一步阐述。