我使用以下代码查找数据列中的最后一个行号:
Dim LR as Long
LR = Range("A4").End("xlDown").Row
A列中的数据之间没有空白单元格。我收到类型不匹配错误。当我尝试选择最后一行时,我收到一个对象错误。
我正在使用之前的代码,因为这段代码:
Workbooks(JunxureFile).Sheets("Sheet1").Range("A4", "A" &
Range("A4").End(xlDown).Row).Copy
在第一个空白单元格后没有停止,而是复制了整个列(Excel允许的最大行数)。
我看过Range.End的每个例子都暗示它不应该这样做,所以我不确定问题是什么。我现在要尝试使用rows.count,但我想知道这段代码的问题是什么。如何更改代码才能使其正常工作?
EDIT2:
我刚试过
ActiveSheet.Range("E1").Value = Rows.Count
看到Rows.Count给我1048576,所以它仍然选择太多行。我将尝试将我的数据复制并粘贴到另一个工作簿,看看是否有帮助(EDIT3:它没有)。
答案 0 :(得分:1)
这个
Workbooks(JunxureFile).Sheets("Sheet1").Range("A4", "A" & Range("A4").End(xlDown).Row).Copy
可能会失败,因为您没有为第二个范围指定正确的工作表,例如
Workbooks(JunxureFile).Worksheets("Sheet1").Range("A4", "A" & Workbooks(JunxureFile).Worksheets("Sheet1").Range("A4").End(xlDown).Row).Copy
或以较短的方式
With Workbooks(JunxureFile).Worksheets("Sheet1")
.Range("A4", "A" & .Range("A4").End(xlDown).Row).Copy
End With
<强>解释强>
如果您使用Range("A4")
而没有指定此范围在哪个工作表中,VBA会猜测您的意思是哪个工作表,并且在大多数情况下它与编写ActiveSheet.Range("A4")
相同,但这可能很容易出错。所以总是指定您所指的范围的工作表:Workbooks(JunxureFile).Worksheets("Sheet1").Range("A4")