2012-07-21 11 views
7

目標:
変数には、特定のシートの行数が含まれている必要があります。シート内の行数

問題:
シートから行の数を計算するためにExcel VBAの構文コードは何ですか?

+0

:それには、あなたはに上記を簡素化することができます。他に何かを意味するなら、私たちに知らせてください。 –

答えて

14

にデータを持っていることを前提としていますが、で処理する必要があります

これを行うには良い方法ですお手入れ。それにはいくつかの欠陥がある。それは、Excelが使用範囲を非常にうまく追跡しない既知の問題です。 VBA経由で使用されている範囲を参照すると、現在の使用範囲にリセットされます。これは、多くの場合、(

Dim lRowCount as Long 

Application.ActiveSheet.UsedRange 
lRowCount = Worksheets("MySheet").UsedRange.Rows.Count 

しかし、あなたはあなたのワークブックの最上部に空白行を持っているので、もし、これがあなたに使用範囲の数を与える点に注意してください。だから、あなたが使用範囲を取得しているこのサブプロシージャを実行してみてください人々はフィルタの基準などのためのスペースを残す)し、それらは数えられません。 usedrangeメソッドは、書式設定の影響を受けることもあります。

私は、あなたがより信頼性のあるfindメソッドを使用することができ、あなたが望む考えるものである使用された最後の行を、必要な場合:

Dim rLastCell As Range 
Dim lLastRow As Long 

Set rLastCell = ActiveSheet.Cells.Find(What:="*", After:=.Cells(1, 1), LookIn:=xlFormulas, LookAt:= _ 
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False) 

If Not rLastCell Is Nothing Then lLastRow = rLastCell.Row 

あなたがデータと少なくとも1つのセルを持っていることがわかっている場合あなたは合計行を意味する場合は、 `Worksheet.Rows.Count`はそれを行います

Dim lLastRow As Long 

lLastRow = ActiveSheet.Cells.Find(What:="*", After:=.Cells(1, 1), LookIn:=xlFormulas, LookAt:= _ 
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False).Row 

See here regarding used range I spoke about above

5

また、試すことができます。

i = Sheets("SheetName").UsedRange.Rows.Count 

あなたが行を削除し、クリア開始した場合しかし、これは少しバギーを得ることができます。

i = Cells(Sheets("SheetName").Rows.Count, 1).End(xlup).Row 

これは、各行がusedrange方法は、私のお気に入りの一つである使用して、カラム1

関連する問題