运行时错误1004应用程序定义或对象定义错误 - 在不同工作表

时间:2016-06-18 20:44:14

标签: vba excel-vba excel

请帮助我解决以下问题:

Sub PBLSearch()

    Dim PBLRng As Range
    Dim PBL As Range
    Dim SearchRng As Range
    Dim SourceWsNr As Integer

    For SourceWsNr = 1 To 2
        Debug.Print Workbooks("Book1.xlsx").Sheets(SourceWsNr).Name
        Set PBLRng = Workbooks("Book1.xlsx").Sheets(SourceWsNr).Range(Range("A1"), Range("A1").End(xlDown))
        For Each PBL In PBLRng.Cells
            Debug.Print PBL.Value
        Next PBL
    Next SourceWsNr

End Sub

SourceWsNr等于1时,代码工作正常,但是一旦这变为2,我就会得到主题中提到的错误。 是因为我重新设置了PBLRng变量吗?我无法找到解决这个问题的方法......

非常感谢你。

最诚挚的问候,

S上。 SZ。

1 个答案:

答案 0 :(得分:1)

问题在于

Workbooks("Book1.xlsx").Sheets(SourceWsNr).Range(Range("A1"), Range("A1").End(xlDown))

Range("A1")Range("A1").End(xlDown)引用活动工作表上的单元格,这就是它在第二张纸上失败的原因(纸张范围方法的参数必须在同一张纸上) 。每次调用Range时都必须指定工作表。这应该这样做:

With ActiveWorkbook.Sheets(SourceWsNr)
    Set PBLRng = .Range("A1", .Range("A1").End(xlDown))
End With

编辑:您也可以考虑使用其他方式查找最后一行,例如.Cells(.Rows.count,1).End(xlUp)。这取决于您的具体需求。