在excel中执行复制粘贴操作时禁用格式设置

omvjsjqw  于 2022-12-05  发布在  其他
关注(0)|答案(1)|浏览(297)

我用下面的代码来禁用单元格复制粘贴操作时的格式设置-

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.无法使用撤消/重做功能
1.单击时无法更改单元格的焦点。
任何想法都将不胜感激。

bvjxkvbb

bvjxkvbb1#

实际上,您希望禁止标准的 * 粘贴 *,并可能用 * 选择性粘贴/值 * 替换它
您可以捕获Paste函数并分配一条消息,告诉用户使用Paste Special / Values,如

....
' 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"

在应用程序中有更多的地方,用户可以从那里获得“粘贴”,你需要陷阱他们所有。
如果你喜欢这种方法,我可以进一步阐述。

相关问题