とある総務の備忘録

ただの備忘録です。PC,Excelの使い方等。覚えた事をすぐに忘れるのでBlogで記録している。

全てのシートのオートフィルタを解除せずに全行を表示

オートフィルタの解除と、絞り込みをクリアする方法を書いておきます。

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は行の途中で空白のがない列を選んでください。

空白があるとそこで止まります。