用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列最后一個單元格所占的行數。
方法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列最后一個單元格所占的行數。
注意:這種方法返回工作表中最后一個包含非空內容的單元格所在的行號,而不管這一單元格與Me.Cells(1,1)之間是否有包含空白內容的單元格。而且這一方法將跳過或者說忽略被隱藏的單元格,比如,數據表有連續的50行,如果第48到50行隱藏了,則只返回47。此外,65536是2003版工作表最大可用行數(2003版 65536行、256列 ,2007版 1048576行、16384列),2007版就應該寫成ActiveSheet.[A1048576].End(xlUp).Row。除了上面兩種寫法,還可以寫成ActiveSheet.Cells(1048576, 1).End(xlUp).Row。
方法3:
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Column
缺點:在工作表進行對刪除或清除操作時也會變得比實際情況大。
方法4:
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.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
效果同方法2
以上方法中比較常用的是方法1和方法2。