Hi,大家好,本专栏将会从零开始和大家用图文的方式,让你从零基础学会VBA!有兴趣的小伙伴可以持续关注我,或者在专栏中进行查看自我学习,愿与君携手前行!
在上节已经讲述了range和cells的使用方法,也许你已经初步具备识别他们了,而今天要给你分享一个小小的知识点,他就是我们经常要使用的获得获得指定行、列中的最后一个非空单元格。当然获得这个的方法和方式是非常多的,今天就简单介绍几个点与你同乐。
Issue-01:使用 VBA 对工作表进行操作时,经常需要定位到指定行或列中最后一个非空单元格, 此时可以使用 Range 对象的 End属性,在取得单元格对象后便能获得该单元格的相关属性,如下代码所示:
#001 Sub LastRow()
#002 Dim rng As Range
#003 Set rng = Sheet1.Range("A65536").End(xlUp)
#004 MsgBox "A 列中最后一个非空单元格是" & rng.Address(0, 0) _
#005 & ",行号" & rng.Row & ",数值" & rng.Value
#006 Set rng = Nothing
#007 End Sub
这个子过程运行以后,将会使用消息框显示工作表中 A 列最后非空单元格的地址、行号和数值。有兴趣的小伙伴可以试试看哟!
知识点解析:End 属性其实返回一个 Range 对象,而该对象代表包含源区域的区域尾端的单元格。这个代码其实等同于我们键盘上的按键<End+向上键>、<End+向下键>、<End+向左键>或<End+向右键>等等操作,这个的语法如下:
expression.End(Direction)
参数 expression 代表是必需的,一个有效的对象,通常情况下是指我们的range对象。
参数 Direction 是可选的,所要移动的方向(上下左右),如下所示:
那么我们如何获得最后一个非空的单元格呢?其实只需要修改一下上面的参数即可得到,如下面的代码所示:
#001 Sub LastColumn()
#002 Dim rng As Range
#003 Set rng = Sheet1.Range("IV1").End(xlToLeft)
#004 MsgBox "第一行中最后一个非空单元格是" & rng.Address(0, 0) _
#005 & ",列号" & rng.Column & ",数值" & rng.Value
#006 Set rng = Nothing
#007 End Sub
代码解析:LastColumn 过程使用消息框显示工作表中第一行最后一个非空单元格的地址、列号和 数值,
通常我们用以下几个方式来获得非空单元格:
获得A列最后一个非空单元格
maxRow = Sheets("Sheet1").[A65535].End(xlUp).Row+1
maxRow = Sheets("Sheet1").[A1].End(xlDown).Row+1
获得A行最后一个非空单元格
maxRow = Sheets("Sheet1").[A1].End(xlToRight).Row
maxRow = Sheets("Sheet1").[ XFD1].End(xlToLeft).Row
好啦!快乐的时间总是非常短暂的,又到了和大家说再见的时候,如果大家感觉本文如果对你有所帮助的话,请帮忙转发点赞,谢谢您能观看到现在,我们下期再见!
我是Excel教案,关注我持续分享更多的Excel技巧!
如果有不明白的或者不懂的可以在下方留言,我们会一一解答的