如何用vba定位一列中最后一个非空单元格?

在编写excel的vba代码解决方案时,会经常遇到需要定位一列中最后一个非空单元格的情况。

比如要对B列执行循环操作,从B列第一个单元格到B列最后一个单元格。

这时候可以用Range对象的End属性来快速地定位。

如: Sheet1.Range(“b65536”).End(xlUp).Row 表示获得B列最后一个非空单元格的行号。

利用End属性还可以快速地定位一行中最右边一个非空单元格。

如 Sheet1.Cells(1, 256).End(xlToLeft).Column 表示获得第一行最右边一个非空单元格的列号。

关于End属性的原理可以看下它的官方帮助文档 Range.End 属性

在exel 2007版本以后,由于一列的单元格数不再是65536,而是1048576。

用上述的方法当最后一个非空单元格大于65536时,则结果会出错。

为此,可以将代码改为以下的适用于各个版本的通用代码:

  1.  Sheet1.Range(“b” & Sheet1.Rows.Count).End(xlUp).Row  表示获得B列最后一个非空单元格的行号。
  2.  Sheet1.Cells(1, Sheet1.Columns.Count).End(xlToLeft).Column 表示获得第一行最右边一个非空单元格的列号。

 

       

发表评论