简单的Excel VBAmacros:Range类的错误1004方法失败

在Excel 2013中:

我用下面的代码创build了一个模块:

Sub PasteFormatting() ActiveCell.PasteSpecial (xlPasteValues) End Sub 

在macros中,我将PasteFormatting设置为CTRL + V但是,当我在表单中select一个单元格并执行“ctrl + v”时,出现错误:

 Run-time error '1004': PasteSpecial method of Range class failed 

这是我第一次使用macros,而且我找不到如此基本的东西来帮助我。

我想要做的就是在剪贴板中复制一些东西,进入Excel,select一个单元格,然后粘贴,而不用改变单元格的格式。

如果您正在寻找粘贴而不丢失目标格式即使使用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 

顺便说一句,我没有因为它在互联网上广泛提供这个任何功劳。

你的代码工作。 如果在执行代码之前没有在剪贴板中复制任何内容,则会生成此类错误。 同样的事情发生时,粘贴的东西,而不是先使用内置的Ctrl + V复制任何东西。 如果你这样做,你会听到哔哔声。 为了处理你的错误和模拟这样的尝试:

 Sub PasteFormatting() On Error Resume Next ActiveCell.PasteSpecial (xlPasteValues) If Err.Number <> 0 Then Beep On Error GoTo 0 End Sub