2014-01-30 42 views
1

我正在使用macros在Excel表格上工作。使用宏查找在Excel工作表中使用的列數

我想計算表中使用的列數。 我用:

ColLen = ActiveSheet.UsedRange.Columns(ActiveSheet.UsedRange.Columns.Count).Column

在一個特定的工作簿,它給了比列的使用數的值之一。 在其他正常的Excel工作簿上,它給出了正確的值。
另一個命令是給正確的值的列的數量,這是:

ColLen = Activeworksheet.Cells(1, Columns.count).End(xlToLeft).Column

它的其他部分,即行數應用於所有片材給正確的值。

RowLen = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.count).Row

任何線索什麼可能是錯誤的表中?我無法解釋我的公司告知的細節。所以,可能很難回答,因爲詢問可能不合邏輯。如果您有任何想法,請告訴。

+1

UsedRange是非常不可靠。使用'.Find'查找列。查看[THIS](http://stackoverflow.com/questions/11169445/error-finding-last-used-cell-in-vba)鏈接可以修改列的行。 –

+1

[這裏](http://stackoverflow.com/questions/11883256/copy-last-column-with-data-on-specified-row-to-the-next-blank-column)是我實際上是鏈接尋找:) –

+1

@SiddharthRout謝謝,它現在的工作:) – Gauranga

回答

2

要獲得列,最可靠的代碼是: (它工作在所有情況下)

Set rng = ws.Cells.Find(What:="*", _ 
      After:=ws.Range("A1"), _ 
      Lookat:=xlPart, _ 
      LookIn:=xlFormulas, _ 
      SearchOrder:=xlByColumns, _ 
      SearchDirection:=xlPrevious, _ 
      MatchCase:=False) 

If rng Is Nothing Then 
    LastCol = 1 
Else 
    LastCol = rng.Column 
End If 

`

相關問題