应用程序定义或对象定义的错误对范围中的粘贴值

时间:2014-04-08 13:27:58

标签: excel-vba vba excel

    Dim rOWIS As Integer

    Dim AOFF As Range   

    rOWIS = ActiveSheet.Range("A1000").End(xlUp).Row

    Range("A" & rOWIS).Copy

    AOFF = ActiveSheet.Range("A" & rOWIS).Offset(1, 0)

    ActiveSheet.Range(AOFF).Paste

在第6行,我收到错误1004。请你帮助我。

1 个答案:

答案 0 :(得分:0)

1004是由Object Defined Error生成的Range(AOFF) Excel没有识别出这种不存在的范围 Dan指出了一个使用Set来声明变量的解决方案 但是simoco指出的也是正确的,.Paste中没有Range Object方法 所以让我们重新编写代码:

Dim rOWIS As Integer
Dim AOFF As Range   

With ActiveSheet
    rOWIS = .Range("A" & .Rows.Count).End(xlUp).Row
    .Range("A" & rOWIS).Copy
    '~~> as what Dan commented
    Set AOFF = ActiveSheet.Range("A" & rOWIS).Offset(1, 0)
    '~~> as simoco commented
    AOFF.PasteSpecial xlPasteAll
End With

以上应该有效。我把测试留给你了。
另请参阅THIS以避免运行时。

修改1:以下是使用链接中讨论的内容的较短版本代码。

Dim AOFF As Range

With ActiveSheet
    Set AOFF = .Range("A" & .Rows.Count).End(xlup)
    AOFF.Copy AOFF.Offset(1, 0)
End With