先頭行にAutoFilterを設定します。
既に設定している場合に、同じ要求を出すと解除されてしまうので、設定済みかを確認してから設定します。
メニューの「フィルタ」の処理をVBAで行います。
設定をONにする場合と、OFFにする場合を引数で選択できるようにしてあります。


【サンプルプログラム】
Sub SetAutoFilter(filename As String)
Dim wb As Workbook
Dim ws As Worksheet
If IsFileExists(filename) = True Then ' ファイルの有無を確認
Set wb = Workbooks.Open(filename) ' ブックを開く
' 先頭行に AutoFilter を設定
AutoFilter wb.Worksheets(1)
Else
MsgBox filename & "は存在しません", vbExclamation
End If
End Sub
【関数化】
' ------------------------------------------------------------
' 説明:先頭行に AutoFilter を設定
' 引数:1:処理対象のワークシート
' 2:AutoFilterをセット(True)するか、解除(False)するか
' 補足:既にセットされている時にTrueをセットしてもセットされたまま
' ------------------------------------------------------------
Sub AutoFilter(ws As Worksheet, Optional setmode As Boolean = True)
' AutoFilter が設定されていない場合
If ws.AutoFilterMode = False Then
' AutoFilter を設定する要求がある場合
If setmode = True Then
' AutoFilter を設定する
Call ws.Range("A1").AutoFilter
End If
Else
' 既に AutoFilter が設定されている場合
' AutoFilter を解除する要求がある場合
If setmode = False Then
' AutoFilter を解除する
Call ws.Range("A1").AutoFilter
End If
End If
End Sub


コメント