《VBA代码解决方案》系列书作者
头条百家平台 VBA资深创作者 _______________________________
使用VBA对工作表进行操作时,经常需要定位到指定行或列中最后一个非空单元格,此时可以使用Range对象的End属性,在取得单元格对象后便能获得该单元格的相关属性,如单元格地址、行列号、数值等,如下面的代码所示。
SubENDRow()
Dim rng As Range
Set rng = Sheet1.Range("A65536").End(xlUp)
MsgBox "A列中最后一个非空单元格是" & rng.Address(0,0) & ",行号" &rng.Row & ",数值" & rng.Value
Set rng = Nothing
EndSub
代码解析:
a) ENDRow过程使用消息框显示工作表中A列最后非空单元格的地址、行号和数值。
b) End属性返回一个Range对象,该对象代表包含源区域的区域尾端的单元格。等同于按键、、或,语法如下:
expression.End(Direction)
参数expression是必需的,一个有效的对象。
参数Direction是可选的,所要移动的方向,可以为下表所示的XlDirection 常量之一。
c) Range对象的End属性返回的是一个Range对象,因此可以直接使用该对象的属性和方法。
运行ENDRow过程结果下图所示。
通过修改相应的参数,能够获得指定行中最后一个非空单元格,如下面的代码所示。
Sub ENDColumn()
Dim rng As Range
Set rng = Sheet1.Range("IV1").End(xlToLeft)
MsgBox "第一行中最后一个非空单元格是" & rng.Address(0, 0)& ",列号" & rng.Column &",数值" &rng.Value
Set rng = Nothing
EndSub
代码解析:
ENDColumn过程使用消息框显示工作表中第一行最后一个非空单元格的地址、列号和数值,
上面的代码中充分应用了End属性,也是实际工作中经常利用到的一个属性,用于检测数据的录入情况,运行后可以知道非空单元格的数目多少,然后可以利用FOR,NEXT
循环,这样可以减少内存的使用,提高程序的运行效率。 今日内容回向:
1 expression.End(Direction) END属性用哪些利用价值。
2 Direction 值有哪些?