いつも変数宣言などしないで使っていたのですが、勉強して反省しました。
さて、フィルターをかけたらデータがなかった時。
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)使ってたり・・・これがお勧めってのがあれば教えてください(;´Д`)