スナックelve 本店

バツイチ派遣40代女性の日記です

フィルターで抽出後データがないとき

いつも変数宣言などしないで使っていたのですが、勉強して反省しました。
さて、フィルターをかけたらデータがなかった時。

Option Explicit

Sub Macro1()
    '表の最下行
    Dim e As Long: e = Range("A1").End(xlDown).Row
    
    'フィルターがかかってなかったらかける
    If Not ActiveSheet.FilterMode Then
        ActiveSheet.Range("$A$1").AutoFilter
    End If
    
    'フィルター
    ActiveSheet.Range("$A$1").AutoFilter Field:=1, Criteria1:="8", _
        Operator:=xlAnd
    
    '抽出後の最下行(データが無ければシートの一番下)
    Dim ne As Long: ne = Range("A1").End(xlDown).Row
    
    
    If ne > e Then MsgBox "ないよ" Else MsgBox "最下行" & ne

    '全データ表示フィルターを取る
    ActiveSheet.ShowAllData
    ActiveSheet.Range("$A$1").AutoFilter
End Sub

こんな感じかなぁって書いてから調べたら、specialcells(xlCellTypeVisible).countとか使う方がいいのかなぁ?
抽出後のデータの一番下を調べて、最初の表の最下行よりも大きくなるようならおかしいって考え方なんすけどなんかヤバいのかなぁ?
他のサイト見てると下から上みる感じのCells(Rows.Count, 1).End(xlUp)使ってたり・・・これがお勧めってのがあれば教えてください(;´Д`)

↑Top