如何在 excel 中的所有打开会话中运行启用 excel 的事件宏



VBA新手在这里。

我有一个 excel 电子表格,它被锁定以进行格式化。但是,如果粘贴到电子表格中,则复制的格式将粘贴到锁定的工作表中。我正在使用下面的代码在 excel 中创建一个事件来撤消和粘贴特殊值。

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Application.CutCopyMode = xlCopy Then
    Application.EnableEvents = False
    Application.Undo
    Target.PasteSpecial Paste:=xlPasteValues
    Application.EnableEvents = True
End If
End Sub

非常有效,但是,这仅在我在同一 excel 会话中复制和粘贴时才有效。如何使其适用于所有 excel 实例?

谢谢!担

将其粘贴到同一文件的 Thisworkbook 模块中(假设该模块当前为空!

Option Explicit
Private WithEvents App As Application
Private Sub App_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Application.CutCopyMode = xlCopy Then
        Application.EnableEvents = False
        Application.Undo
        Target.PasteSpecial Paste:=xlPasteValues
        Application.EnableEvents = True
    End If
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Set App = Nothing
End Sub
Private Sub Workbook_Open()
    Set App = Application
End Sub

最新更新