15

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

問題:
シートの行数を数えるには、Excel VBA のどの構文コードが必要ですか?

4

2 に答える 2

25

usedrange メソッドの使用は私のお気に入りの 1 つですが、注意して扱う必要があります。いくつかの欠陥/落とし穴があります。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 つあることがわかっている場合は、上記を次のように単純化できます。

Dim lLastRow  As Long

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

上で話した使用範囲についてはこちらをご覧ください

于 2012-07-21T22:17:21.440 に答える
13

あなたも試すことができます:

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

ただし、行の削除とクリアを開始すると、少しバグが発生する可能性があります。

これを行うより良い方法は次のとおりです。

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

これは、各行の列 1 にデータがあることを前提としています。

于 2012-07-21T21:49:49.250 に答える