【问题标题】:Code was working and now I get Error 1004代码正在运行,现在我收到错误 1004
【发布时间】:2018-05-08 19:09:33
【问题描述】:

我收到此错误“运行时错误 1004 应用程序定义或对象定义错误”

我的代码正常工作,但我不得不删除我正在将结果写入的工作表(“RawData”),我创建了一个同名的新工作表,现在我收到了这个错误。我尝试创建一个具有不同名称的新工作表并更改宏中的所有引用,但它仍然给我这个错误。尝试创建一个新文件并将所有内容复制到其中,但仍然相同。让其他文件具有相同的代码工作,所以我现在不知道该怎么做。尝试添加 .Activate 并没有。

帮助

Sheets("CE").Select
    Range("d3:d8").Select
Selection.Copy
Sheets("RawData").Select
Range("b1").End(xlDown).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True

【问题讨论】:

  • 您是否尝试过重新启动计算机?我知道这听起来很迟钝,但有时 VBA 环境会损坏。
  • 无法在我的手机上进行测试,但我认为如果 B 列为空,偏移量将在工作表底部。如果您忽略代码中的错误,它可能会停止。
  • 重启是一个经常被忽视的简单步骤。重启可以解决从手机到玩具到关系到电视情景喜剧的一切问题
  • 正如@DarrenBartrup-Cook 所说,End(xlDown) 在一个完全空白的列中(或者单元格 B1 是该列中的唯一值)将把你放在工作表的底行,并且然后你试图选择下面的第一行 - 这将给出你得到的错误。
  • 试过重置电脑还是一样。我不知道如何排除故障,因为它以前工作过,我所做的只是删除工作表,创建一个新工作表并将其命名相同,所以我不知道它是如何损坏的

标签: vba excel copy-paste offset


【解决方案1】:

您忘记提及导致简单解决方案的关键信息。 您遇到的错误很重要——但同样或更重要的是发生错误的位置,例如代码在哪一行中断。 p>

End(xlDown).Offset(1, 0)

“带我到宇宙的尽头。然后再进一步。” :-)


成为会员是一个孤独的俱乐部

【讨论】:

  • 这个解决方案似乎很有可能,因为 OP 'created a new sheet'
  • 所以?新床单也结束了!
  • 呃...我同意你的看法。新的工作表可能没有任何信息。顺便说一句,也许你可以建议Range("b&ROWS.COUNT").End(xlUP).Offset(1, 0).Select
  • P.S.我想到了巴斯光年的名言“到无限,甚至更远!”
  • @CamiloQuevedo - xLup 从底行开始向上查找,然后向下移动一个单元格。 xLdown 从顶部开始向下看。
【解决方案2】:

最好从底部开始寻找第一个空白行:

Sub Test()
    Sheets("CE").Range("d3:d8").Copy
    Sheets("RawData").Select
    Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多