Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2016)
テーブル抽出結果のコピー
投稿日時: 20/03/18 10:57:37
投稿者: pon2017

テーブルの抽出結果を他のシートへ貼り付けているのですが、抽出結果が無い時に全てのデータがコピーされてしまいます。
抽出データがあると、結果だけ貼り付けができています。
 
テーブルは、A1セル(タイトル行)が選択されている状態です。
 
          With Range("A1").ListObject.DataBodyRange
                .AutoFilter 4, i
                .AutoFilter 7, j
                .Copy sh_pas.Range("A1")
                .AutoFilter 4
                .AutoFilter 7
           End With
 
よろしくお願いします。

回答
投稿日時: 20/03/18 12:17:06
投稿者: simple

【方法1】

Sub test2()
    Dim n As Long
    With Range("A1").ListObject.DataBodyRange
        .AutoFilter 4, i
        .AutoFilter 7, j
        On Error Resume Next
        n = Application.CountA(.Columns(1).SpecialCells(xlCellTypeVisible))
        On Error GoTo 0
        If n > 0 Then
            .Copy sh_pas.Range("A1")
        End If
        .AutoFilter 4
        .AutoFilter 7
    End With
End Sub

【方法2】
ワークシートのどこかに、
可視セルの非空白のセル個数を数えるSubtotalを用いた式を書いておいて、
フィルタを掛けた時のそのセルの値で処理を分岐する方法もあるでしょう。
 
ご参考まで。

投稿日時: 20/03/18 15:34:36
投稿者: pon2017

simple 様
 
早速ありがとうございました。
解決できました。