请帮助我解决以下问题:
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。
答案 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)
。这取决于您的具体需求。