vba程序中,如何返回最后一列不为空的列的列号[Microsoft Excel精英论坛]
Nextcol=Cells(1,255).End(xlToLeft).Column
'取从cells(1,255)向左查到的第一个非空值单元格的列数,不含cells(1,255),与连续与否无关,没查到时返回第一列列号
cells(unt).end(xltoleft).column  返回第一列列号
Nextcol=Cells(1,1).End(xlToright).Column
'取从cells(1,1)向右查到的第一个非空值单元格的列数,不含cells(1,1),与连续与否无关,没查到时返回最后一列列号
Nextcol=Cells(65536,1).End(xlup).row
'取从cells(65536,1)向上查到的第一个非空值单元格的行数,不含cells(65536,1),与连续与否无关,没查到时返回第一行行号
Nextcol=Cells(1,1).End(xldown).row
'取从cells(1,1)向下查到的第一个非空值单元格的行数,不含cells(1,1),与连续与否无关,没查到时返回最后一行行号
上面的方法不能判断隐藏行(如果最后几行隐藏会被漏过)
**********************************************************************************************
用VBA得到EXCEL表格中的行数和列数
编程总结
  每种方法中上面的是Excel的行数,下面的是Excel的列数。
方法1:
  ActiveSheet.UsedRange.Rows.Count 
  ActiveSheet.UsedRange.Columns.Count
缺点:有时可能会比实际数大一些,原因是如果你把最后几行(列)数据清除后(非整行或整列删除),用这个命令仍返回未清除前的值。就是说现在虽然是空的,但是你曾经用过也算你的。
方法2:
  ActiveSheet.Range("A65535").End(xlUp).Row
  ActiveSheet.Range("IV1").End(xlToLeft).Column
  可以简写为:
  ActiveSheet.[A65536].End(xlUp).Row
  ActiveSheet.[IV1].End(xlToLeft).Column
缺点:只能计算出一列(行)的最后一个单元格所在的行(列)数。本例是只返回A列最后一个单元格所占的行数。
方法3:
  ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
  ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column
  缺点:在工作表进行对删除或清除操作时也会变得比实际情况大。
方法4:
vba编程技巧
  ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
  ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
  缺点:在工作表进行对删除或清除操作时也会变得比实际情况大。
方法5:
  Application.CountA(ActiveSheet.Range("A:A"))
  Application.CountA(ActiveSheet.Range("1:1"))
  只能统计一列(行)的实际使用情况,得到的不一定是最后一行(列)的位置。方法2的数值比此方法大时,说明在A列的数据间有空白未填写的单元格。
方法6:
  ActiveSheet.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
  ActiveSheet.Cell
s.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
  效果同方法2,但可以查隐藏行
以上方法中比较常用的是方法1和方法2。
方法六原为:
ActiveSheet.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
ActiveSheet.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
改为如下即可:
ActiveSheet.Range("a:a").Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).row
ActiveSheet.Range("1:1").Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).column
有图可证:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。