全てのシートのオートフィルタを解除せずに全行を表示
オートフィルタの解除と、絞り込みをクリアする方法を書いておきます。
Excel2003だとショートカットを自分で設定できたのでこんなマクロいらなかったんですけどね。
Ctrl + Shift + LでLを2回押すという方法もあるけど、オートフィルタの場所が一番上の行じゃない場合、何故か一番上の行にフィルタが再設定されてしまうという不具合が起こるので…
アクティブシートのオートフィルタを解除する
オートフィルタが解除され、非表示になっていた全行が表示されます。
また絞り込みをしたい場合、オートフィルタの設定をしなおす必要があります。
Sub 任意のプロシージャ名()
ActiveSheet.AutoFilterMode = False
End Sub
アクティブシートのオートフィルタを保持したまま全行を表示する
オートフィルタの絞り込みのみを解除します。
(オートフィルタの絞り込みのクリア)
Sub 任意のプロシージャ名()
Activesheet.ShowAllData
End Sub
全てのシートでオートフィルタを解除する
全てのシートでオートフィルターを解除する方法です。
これだと全シートで全行表示されますが、オートフィルタの設定も解除されます。
Sub 任意のプロシージャ名()
Dim sh As Worksheet
For Each sh In Worksheets
sh.AutoFilterMode = False
Next sh
End Sub
オートフィルタは保持したまますべてのシートで行を表示
オートフィルタの絞り込みを全てのシートでクリアします。
オートフィルタは解除されません。
Sub 任意のプロシージャ名()
Dim sh As Worksheet
For Each sh In Worksheets
If sh.FilterMode Then sh.ShowAllData
Next sh
End Sub
If sh.FilterMode Thenがないと反応しません。
オートフィルタの解除と、オートフィルタの絞り込みのクリアは違いますので、覚えておきましょう。
私は最初その言葉の違いをはっきり認識しておらず、検索で小一時間格闘しました;
ついでに
フィルター解除後に一番下のセルの次を表示する方法
いつも順番に下に何かを追加している場合に有効なマクロです。
Sub 任意のプロシージャ名()
Dim i As Long
If ActiveSheet.FilterMode = True Then
ActiveSheet.ShowAllData
End If
i = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(i, 1).Select
End Sub
(i, 1)の1は行の途中で空白のがない列を選んでください。
空白があるとそこで止まります。