VBA UsedRange – 行または列の数を数える

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 8月 1, 2022

UsedRange – 最後に使用されたセル、列、行を検索する

次のコードは、ワークシートで使用されている行の合計数を示すメッセージボックスを返します。空の行があっても、その行の後ろにデータがある場合には使用されたとみなされます。

MsgBox ActiveSheet.UsedRange.Rows.Count

シートを下に向かってループを実行する必要があるが、どこで停止すればよいのか分からないことはありませんか?ActiveSheet.UsedRange.Rows.Countが役に立つかもしれません。 これをモジュールに入れてみましょう。

Sub LastRow()

Dim LastRow As Integer

LastRow = ActiveSheet.UsedRange.Rows.Count

MsgBox LastRow

End Sub
Sub LastCol()

Dim LastCol As Integer

LastCol = ActiveSheet.UsedRange.Col.Count

MsgBox LastCol

End Sub

最初の空白セルを探す

VBAを使用すると、最初の空のセル、または列で使用される最後の行の後に書き込む必要がある場合があります。この場合、ループする必要はなく、以下のコードで検索できます。 この例では、列 “d” の最初の空のセルに “FirstEmpty” を書き込みます。

Public Sub AfterLast()

ActiveSheet.Range("d" & ActiveSheet.Rows.Count).End(xlUp).Offset(1, 0).Value = "FirstEmpty"
End Sub

ワークシートで使用中の列数をカウントする

次のコードは、ワークシートで使用されている列の合計数をメッセージボックスに返します。空の列は、空の列の後にデータがある場合には使用されたとみなされます。

MsgBox ActiveSheet.UsedRange.Columns.Count

UsedRangeの注意点

For-Nextループで列全体を処理する場合、通常はActiveSheet.UsedRange.Rows.Countを使って停止する場所を探します。私はいつもこの方法でうまくいっています。

ただ、Excelが最後の行がどこかに存在すると思っていても、実際にはその行は空であることがあります。データをインポートした後、何度かこの現象に遭遇したことがあります。BeyondTechnologyでは以下のように説明されています。

スプレッドシートの使用範囲(または「ダーティエリア」)は、実際にレコードが入力されている領域よりも大きい場合があります。そのため、ワークシートオブジェクトのUsedRangeは常に機能するわけではありません。

vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples