Excelのテーブルをオートフィルタして抽出結果が0件のとき

テーブルにオートフィルタをかけて抽出結果をコピーするマクロを書いてて
Excelのテーブルをオートフィルタして抽出結果が0件のとき(タイトル)
抽出結果を無視してテーブルを全件コピーしてしまう挙動に悩まされたのでメモ

やってたこと

このデータ抽出のところで抽出結果が0件のときだけ全件引っ張ってきてしまう、抽出結果が1件でもあれば問題なし

' オートフィルタ(年月で抽出)
With shtData.Range("A3").ListObject.Range
    .AutoFilter lngColYear, "2019"
    .AutoFilter lngColMonth, "3"
End With

’ データ抽出(種別列+その右の3列)
With shtData.Range("A3").ListObject
    Set rngData = Union(.ListColumns(lngColSyubetu).DataBodyRange, _
                      .ListColumns(lngColSyubetu + 1).DataBodyRange, _
                      .ListColumns(lngColSyubetu + 2).DataBodyRange, _
                      .ListColumns(lngColSyubetu + 3).DataBodyRange)
End With

 ' データを貼り付け
rngData.Copy shtReport.Range("A2")

対処したこと

いまひとつ理由が分からなかったので、オートフィルタをかけた時点で件数チェックのIF文を追加して、抽出結果が0件の時は貼り付けないようにした

If shtData.Range("A3").ListObject.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count = 1 Then

最初は、ListObject.DataBodyRange(テーブルのタイトル行を除いたデータ部)のSpecialCells(xlCellTypeVisible)がnothingでいけると思ったけどエラーで×
ListObject.Range(テーブルのタイトル行を含めた全件)のSpecialCells(xlCellTypeVisible)の行数が1=タイトル行しかないで通った