'「End」で表示されているデータの「最終行」で判定
If Cells(Rows.Count, "A").End(xlUp).Row > 1 Then MsgBox "データあり"
'「SubTotal関数」で「フィルタ結果の数」で判定
If WorksheetFunction.Subtotal(3, Range("A:A")) > 1 Then MsgBox "データあり"
では、解説していきます。
「End」を使ってオートフィルタの結果を判定
「End」を使ってオートフィルタの結果を判定してみます。
「End」で表示されている最終行を取得
「End」で表示されている最終行を取得するには、次のように入力します。
'表示されているデータの「最終行」を取得
a = Cells(Rows.Count, "A").End(xlUp).Row
表示されている最終行を取得する流れは、次のようになります。
セルの最後
セルの最後を「Cells(Rows.Count, "A")」で取得します。
セルの一番最後です。
移動して一番最初に入力されているセル
上の方に移動して、一番最初に入力されているセルを「.End(xlUp)」で取得します。
上に移動して一番最初に入力されているセルが取得できます。
表示されている「最終行」
「最終行」を「.Row」で取得します。
これで、表示されている「最終行」が取得できます。
では、実際に実行してみます。
「データあり」の場合
「データあり」の場合で、表示されている最終行を取得してみます。
Sub TEST1()
'表示されているデータの「最終行」を取得
Debug.Print Cells(Rows.Count, "A").End(xlUp).Row
End Sub
オートフィルタで「データあり」のフィルタをしておきます。
データありのフィルタ
では、実行してみます。
最終行を取得
結果は、「9」となりました。
表示されている最終行を取得できました。
「データなし」の場合
「データなし」の場合でやってみます。
Sub TEST2()
'表示されているデータの「最終行」を取得
Debug.Print Cells(Rows.Count, "A").End(xlUp).Row
End Sub