在Excel 2013中:
我使用以下代码创建了一个模块:
Sub PasteFormatting()
ActiveCell.PasteSpecial (xlPasteValues)
End Sub
在宏中,我将PasteFormatting设置为CTRL + V. 但是,当我在工作表中选择一个单元格并执行“ctrl + v”时,我收到错误:
Run-time error '1004': PasteSpecial method of Range class failed
这是我第一次使用宏,而且我找不到任何基本的东西来帮助我。
我想做的就是复制剪贴板中的内容,进入Excel,选择一个单元格,然后粘贴而不更改单元格的格式。
答案 0 :(得分:1)
如果您正在寻找粘贴而不会丢失目标格式,即使使用Ctrl + V,只需将下面的代码放在Microsoft Excel对象“ThisWorkbook”下(即不在任何模块下)。
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim UndoString As String, srce As Range
On Error GoTo err_handler
UndoString = Application.CommandBars("Standard").Controls("&Undo").List(1)
If Left(UndoString, 5) <> "Paste" And UndoString <> "Auto Fill" Then
Exit Sub
End If
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Undo
If UndoString = "Auto Fill" Then
Set srce = Selection
srce.Copy
Target.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.SendKeys "{ESC}"
Union(Target, srce).Select
Else
Target.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
Exit Sub
err_handler:
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
顺便说一下,我没有因为它在互联网上广泛使用而受到任何赞誉。
答案 1 :(得分:0)
您的代码有效。如果在执行代码之前没有在剪贴板中复制任何内容,则会产生此类错误。当你使用内置的 Ctrl + V 粘贴东西而不先复制任何东西时,会发生同样的事情。如果你这样做,你会听到一声哔哔声。要处理你的错误并模仿这样的尝试:
Sub PasteFormatting()
On Error Resume Next
ActiveCell.PasteSpecial (xlPasteValues)
If Err.Number <> 0 Then Beep
On Error GoTo 0
End Sub