Sub TEST1()
'テーブルの最終行を取得
Debug.Print ActiveSheet.ListObjects("テーブル1").Range.Rows.Count
End Sub
ListObjectsで行数を取得します。
ListObjectsで行数を取得
実行すると、ListObjectsで行数を取得できます。
行数を取得できた
ListObjectsで行数を取得できました。
構造化参照を使う
構造化参照を使って、テーブルの行数を取得してみます。
構造化参照の場合は、「.Rows.Count」を使います。
テーブル全体を参照したいので、「Range("テーブル1[#ALL]")」とします。
Sub TEST2()
'テーブルの最終行を取得
Debug.Print Range("テーブル1[#ALL]").Rows.Count
End Sub
構造化参照で、行数を取得します。
構造化参照で行数を取得
実行すると、構造化参照で行数を取得できます。
行数を取得できた
構造化参照で行数を取得できました。
ループしてテーブルのデータ行数を取得する
次は、「データ行数」を取得していきます。
まずは、テーブルを最終行からループして、「データ行数」を取得してみます。
テーブルの最終行からループする
テーブルの最終行からループして、「データ行数」を取得するVBAコードは、次のようになります。
Sub TEST3()
Dim A
With ActiveSheet.ListObjects("テーブル1").Range
'テーブルを最終行からループ
For i = .Rows.Count To 1 Step -1
'データがある場合
If ActiveSheet.ListObjects("テーブル1").Range(i, 1) <> "" Then
A = i 'データ行数を入力
Exit For 'ループを終了
End If
Next
End With
Debug.Print A
End Sub
手順は、
テーブル最終行から上にループ
データが存在したらデータ行を保存
という感じです。
手順
「For~Next」で、最終行から上にループします。
データが存在するところまでループして、データ行数を取得します。
これで、データ行数を取得することができます。
次の3つのテーブルでやってみます。
空白行があるテーブル
データで埋まっているテーブル
空テーブル
では、やってみます。
空白行があるテーブル
空白行があるテーブルで、データ行数を取得してみます。
空白行があるテーブルでデータ行数を取得
実行すると、データ行数を取得できます。
「4」行を取得できた
「4」行という結果になりました。
正しくデータ行数を取得できています。
データで埋まっているテーブル
次は、データで埋まっているテーブルで、データ行数を取得してみます。
「データで埋まっているテーブル」でデータ行数を取得
実行すると、データ最終行を取得できます。
「4」行を取得できた
結果は、「4」となって、データ行数を取得できました。
空のテーブル
空のテーブルで、データ行数を取得してみます。
「空テーブル」でデータ行数を取得
空テーブルの場合は、一番上までループして、「1」となります。
「1」行を取得できた
データ行数を取得できました。
「End(xlUp)」を使ってデータ行数を取得する
次は、「End(xlUp)」を使って、データ行数を取得してみます。
「End(xlUp)」を使う方法は、ちょっとめんどくさいです。
やってみます。
End(xlUp)でデータ最終行を取得してデータ行数を取得
End(xlUp)で、データ最終行を取得して、データ行数を取得するVBAコードです。
Sub TEST4()
Dim A
With ActiveSheet.ListObjects("テーブル1").Range
'テーブルの最終行から、「Ctrl + ↑」を使う
A = .Cells(.Rows.Count, 1).End(xlUp).Row - .Row + 1
End With
Debug.Print A
End Sub
Sub TEST5()
Dim A
With ActiveSheet.ListObjects("テーブル1").Range
'テーブルの最終行にデータがある場合
If .Cells(.Rows.Count, 1) <> "" Then
'テーブルの行数がデータ最終行
A = .Rows.Count
'データがない場合
Else
'テーブルの最終行から、「Ctrl + ↑」を使う
A = .Cells(.Rows.Count, 1).End(xlUp).Row - .Row + 1
End If
End With
Debug.Print A
End Sub
実行すると、データで埋まったテーブルでも、データ行数を取得することができます。
データ行数を取得することができました。
空のテーブル
テーブルにデータがない場合は、「1」となります。
空テーブルのデータ行数を取得する
実行してみます。
「1」行を取得できた
結果は、「1」行となって、データ行数を取得できました。
こんな感じで、「End(xlUp)」を使って、データ行数を取得できます。
「Find」を使ってテーブルのデータ行数を取得する
「Find」を使ってテーブルの「データ行数」を取得してみます。
「Find」を使った方法が一番簡単です。
「Find」で最終行を取得してデータ行数を取得
では、「Find」で最終行を取得して、「データ行数」を取得してみます。
VBAコードは、次のようになります。
Sub TEST6()
Dim A
With ActiveSheet.ListObjects("テーブル1").Range
'「Find」でデータ最終行を取得する
A = .Find("*", , , , 1, 2).Row - .Row + 1
End With
Debug.Print A
End Sub