因为UsedRange包含着带格式的、空白的单元格,所以使用usedrange会把值为空但是有其他内容的一起计算进去。
使用Find函数只会查找有值的最后一个单元格。下面是一些示例:
查找最后一行,返回最后一行的行数。
最后一行是第5行,则返回5.
Function UseRowFind() As Long '用Find方法找最后一行,返回行数
Dim r As Range
Set r = Cells.Find("*", after:=Range("A1"), searchorder:=xlRows, searchdirection:=xlPrevious)
If r Is Nothing Then
MsgBox "无数据"
Else
UseRowFind = r.Row
End If
End Function
查找最后一列,返回最后一列的列数。
最后一列是D列,则返回4.
Function UseColFind() As Long '用Find方法找最后一列,返回列数
Dim r As Range
Set r = Cells.Find("*", after:=Range("A1"), searchorder:=xlColumns, searchdirection:=xlPrevious)
If r Is Nothing Then
MsgBox "无数据"
Else
UseColFind = r.Column
End If
End Function
查找最后一个单元格,返回单元格的地址(字符串)。
最后一个单元格是E5,则返回E5.
Function UseRngFind() As String '用Find方法找最后一个单元格
Dim r As Range
Set r = Cells.Find("*", after:=Range("A1"), searchorder:=xlRows, searchdirection:=xlPrevious)
If r Is Nothing Then
MsgBox "无数据"
Else
UseRngFind = Replace(r.Address, "$", "")
End If
End Function