Excel宏有时有效而有时却无效

时间:2018-08-03 18:21:09

标签: excel vba excel-vba

我没有VBA经验,但是需要能够在不更改格式的情况下粘贴到单元格中。我在线程here中找到了该脚本:

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文件中,我认为它最初是可以工作的。但是,经过进一步测试,它似乎只能工作一半时间,我不知道为什么。我确保每次测试都启用宏。 是什么原因可能导致此功能有时起作用,然后在其他时间不起作用?

2 个答案:

答案 0 :(得分:1)

也许更像这样:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

    Dim val

    If Application.CutCopyMode = xlCopy Then
        val = Target.Value
        Application.EnableEvents = False
        Application.Undo
        Target.Value = val
        Application.EnableEvents = True
    End If

End Sub

...只要您不需要复制/粘贴公式

答案 1 :(得分:0)

另一种选择是,只要该工作表被激活,就可以用Application.OnKey接管Ctrl-V的控制。假设通过键盘快捷键而不是通过菜单访问粘贴行为,这使您几乎可以执行任何所需的粘贴行为。

Private Sub Worksheet_Activate()
    'Take over Ctrl-V on this sheet.
    Application.OnKey "^{v}", "PasteValues"
End Sub

Private Sub Worksheet_Deactivate()
    'All done, cede Ctrl-V back to Excel.
    Application.OnKey "^{v}"
End Sub

Public Sub PasteValues()
    If Not Selection Is Nothing Then
        Selection.PasteSpecial Paste:=xlPasteValues
    End If
End Sub