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