先頭行にAutoFilterを設定

先頭行に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

コメント