前一篇博客讲解了如何使用END属性
最后单元格。
在VBA中还有其他的方法可以用来定位最后单元格。工作表中示例数据如下图所示,注意其中A4为空,A6至A7单元格看似空白,其实是有内容的,A6为零长度公式,A7为空格,A8为前缀字符。
示例代码如下。
Sub Demo2()
Dim rngLast As Range
Set rngLast = Columns(1).Find(What:="*", After:=Range("A1"), _
LookIn:=xlFormulas, SearchDirection:=xlPrevious)
If rngLast Is Nothing Then
Debug.Print "A列全空"
Else
Debug.Print "最后单元格:"; rngLast.Address
End If
Set rngLast = Nothing
End Sub
运行示例代码,结果如下。
最后单元格:$A$7
如果A列为空,那么将在立即窗口中输出。
A列全空
【代码解析】
FIND方法
的SearchDirection参数
设置为xlPrevious
,其含义为从After参数
指定的单元格开始向前查找,由于A1是A列第一个单元格,因此接下来扫描该列的最后一个单元格,What参数
指定为星号,代表可以匹配任何单元格内容。
注意:由此示例可以看出,使用FIND方法
定位最后单元格时,仅有前缀字符的单元格(即A8)不包含在内。