本质上,您想禁止标准粘贴,并可能用粘贴特殊 / 值替换它
您可以捕获粘贴功能并分配一条消息,告诉用户使用选择性粘贴/值,例如
....
' 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"
并且应用程序中有更多地方可以让用户获得“粘贴”,您需要将它们全部捕获。
如果您喜欢这种方法,我可以进一步详细说明。