微信公众号 【EXCEL880】 QQ群【341401932】
课程咨询 加我微信EXCEL880B 试学网址http://v.excel880.com
课程咨询 加我微信EXCEL880B 试学网址http://v.excel880.com
VBA技巧3 获得指定行、列中的最后一个非空单元格
使用VBA对工作表进行操作时,经常需要定位到指定行或列中最后一个非空单元格,此时可以使用Range对象的End属性,在取得单元格对象后便能获得该单元格的相关属性,如单元格地址、行列号、数值等,如下面的代码所示。
Sub LastRow() Dim rng As Range Set rng = Sheet1.Range("A"&rows.count).End(xlUp)'rows.count为最大行号,这里为兼容03和07以上 MsgBox "A列中最后一个非空单元格是" & rng.Address(0, 0) _ & ",行号" & rng.Row & ",数值" & rng.Value Set rng = Nothing End Sub
代码解析:
LastRow过程使用消息框显示工作表中A列最后非空单元格的地址、行号和数值。
End属性返回一个Range对象,该对象代表包含源区域的区域尾端的单元格。等同于按键<Ctrl+向上键>、<Ctrl+向下键>、<Ctrl+向左键>或<Ctrl+向右键>,语法如下:
expression.End(Direction)
参数expression是必需的,一个有效的对象。
参数Direction是可选的,所要移动的方向,可以为表格 31所示的XlDirection 常量之一。
常量 | 值 | 描述 |
xlDown | -4121 | 向下 |
xlToRight | -4161 | 向右 |
xlToLeft | -4159 | 向左 |
xlUp | -4162 | 向上 |
表格 31XlDirection 常量
Range对象的End属性返回的是一个Range()单元格区域)对象,因此可以直接使用该对象的属性和方法。
运行LastRow过程结果如图 31所示。
通过修改相应的参数,能够获得指定行中最后一个非空单元格,如下面的代码所示。
Sub LastColumn() Dim rng As Range Set rng = Sheet1.cells(1,columns.count).End(xlToLeft)'columns.count代表最大列号为了 03和07以上通用 MsgBox "第一行中最后一个非空单元格是" & rng.Address(0, 0) _ & ",列号" & rng.Column & ",数值" & rng.Value Set rng = Nothing End Sub
代码解析:
LastColumn过程使用消息框显示工作表中第一行最后一个非空单元格的地址、列号和数值,如图 32所示。