「vba usedrange.rows.count 上手くいかない」
という検索キーワードでこのサイト『インストラクターのネタ帳』へのアクセスがありました。
WorksheetオブジェクトのUsedRangeプロパティを使った、
ActiveSheet.UsedRange.Rows.Count
といったコードで、最終行番号を取得できると思い込んでいた方による検索ではないかと推測しています。
ActiveSheet.UsedRange.Rows.Countは行数を取得するだけ
「ActiveSheet.UsedRange.Rows.Count」は、最終行番号を取得するコードではなく、使われているセル範囲の行数をカウントするコードに過ぎません。
であるにも関わらず「ActiveSheet.UsedRange.Rows.Count」で最終行番号を取得できると、思い込んでいる方がいらっしゃいます。
例えば下図のようなシートの場合、「ActiveSheet.UsedRange.Rows.Count」は「5」を返します。
この場合は、使っている行数と最終行番号が、たまたま一致しています。
しかし下図のようなシートの場合でも「ActiveSheet.UsedRange.Rows.Count」は「5」を返します。
この場合、上に空白行があるために使っている行数と最終行番号が一致しません。
「vba usedrange.rows.count 上手くいかない」
と検索なさった方は、後者のような状況だったのではないかと想像しています。
UserRangeプロパティで最終行番号を取得するサンプルマクロ
WorksheetオブジェクトのUsedRangeプロパティを使った最終行番号を取得するには、以下のようなコードにする必要があります。
With ActiveSheet.UsedRange
MsgBox .Item(.Count).Row
End With
End Sub
1行で、
MsgBox ActiveSheet.UsedRange.Item(ActiveSheet.UsedRange.Count).Row
としても同じですが、横に長いので、With文にしています。
サンプルマクロで利用しているオブジェクト式について
カッコ内の「ActiveSheet.UsedRange.Count」で、使用しているセル範囲の数を取得できます。
コレクションとしてのRangeオブジェクトから、単独のRangeオブジェクトを取得するItemプロパティの引数に、
「ActiveSheet.UsedRange.Count」を指定した、オブジェクト式で「ActiveSheet.UsedRange.Item(ActiveSheet.UsedRange.Count)」で、使っているセル範囲の最終セルを表すRangeオブジェクトを取得できます。
その使用しているセル範囲の最終セルを表すRangeオブジェクトの、Rowプロパティで行番号を取得しています。
最終更新日時:2022-07-04 15:55
- Newer:VBAで凡例のフォントサイズを変更する
- Older:AddLineメソッドで直線を描くPowerPointマクロ
Home » Excel VBA Rangeオブジェクト » UsedRangeで最終行番号が取得できない