当我想要查找最后使用的单元格值时,我使用:
Dim LastRow As Long
LastRow = Range("E4:E48").End(xlDown).Row
Debug.Print LastRow
当我把一个元素放入一个单元格时,我得到了错误的输出。但是当我在单元格中输入多个值时,输出是正确的。这背后的原因是什么?
发布于 2015-01-03 02:58:32
使用该解决方案时需要记住的一个重要注意事项是:
LastRow = ws.Cells.Find(What:="*", After:=ws.range("a1"), SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
..。是为了确保您的LastRow
变量是Long
类型:
Dim LastRow as Long
否则,在.XLSX工作簿中的某些情况下,最终会出现溢出错误
这是我的封装函数,我将其放入各种代码中使用。
Private Function FindLastRow(ws As Worksheet) As Long
' --------------------------------------------------------------------------------
' Find the last used Row on a Worksheet
' --------------------------------------------------------------------------------
If WorksheetFunction.CountA(ws.Cells) > 0 Then
' Search for any entry, by searching backwards by Rows.
FindLastRow = ws.Cells.Find(What:="*", After:=ws.range("a1"), SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
End If
End Function
发布于 2014-11-05 23:24:16
我想补充一下Siddarth Rout给出的答案,即可以跳过CountA调用,方法是让Find返回一个Range对象,而不是行号,然后测试返回的Range对象是否为Nothing (空白工作表)。
此外,对于空白工作表,我会让我的LastRow过程版本返回0,这样我就可以知道它是空的。
发布于 2016-06-29 16:07:23
Sub lastRow()
Dim i As Long
i = Cells(Rows.Count, 1).End(xlUp).Row
MsgBox i
End Sub
sub LastRow()
'Paste & for better understanding of the working use F8 Key to run the code .
dim WS as worksheet
dim i as long
set ws = thisworkbook("SheetName")
ws.activate
ws.range("a1").select
ws.range("a1048576").select
activecell.end(xlup).select
i= activecell.row
msgbox "My Last Row Is " & i
End sub
https://stackoverflow.com/questions/11169445
复制相似问题