1. 程式人生 > >VBA取得EXCEL表格中的行數和列數

VBA取得EXCEL表格中的行數和列數

VBA取得EXCEL表格中的行數和列數

      初學EXCEL巨集的童鞋,總是很想知道表格中含有資料的行數和列數,尤其是行數和列數不確定的情況下。這樣可以避免很多的錯誤,並且可以提高效率。但每次用到的時候到網上查詢時,總是給了很多無用的答案,往往找不到想要的結果。筆者也是每次使用時,臨時查詢總是很頭疼。偶然發現一篇部落格,上面詳細記錄了不同的方法,筆者測試了幾種發現真的很好用。本著分享萬歲的精神,將部落格內容共享出來。希望對大家有所幫助。

   來源:http://www.okexcel.com.cn/bbs/viewthread.php?tid=26

注:每種方法中上面的是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:

  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。