« 旅行客は地元の人に気をつかったほうがいいと思う。 | トップページ | 吸血鬼は不老不死なのになぜ "長老" はお年寄なんだろうね? »

Excelのオートフィルタ(変数で範囲の値を受けとる。)

この記事は自分用の覚書です。
(Windows 8.1 Pro 64ビット + Excel2013 Home & Business)

「数値フィルタ」の「指定の範囲内」を実行した場合と同じ結果になる。


Sub オートフィルタ_変数で範囲の値を受けとる()
    Dim フィルターを実行する列 As Variant '変数の型を Variant にしておけば、半角数字でも全角数字でも入れられる。
    Dim 開始 As Variant
    Dim 終了 As Variant
    Dim 確認 As Variant
'
'---■何列目でフィルタをかけるかを指定し、「数値フィルター」の「指定の範囲内」について、範囲の最初の値と最後の値を変数に入れる ---ここから
        フィルターを実行する列 = InputBox(Prompt:="フィルターを実行する列を指定してください。1列目なら 1 を、 2列目なら 2 を入力します。", Title:="フィルターを実行する列")
            If フィルターを実行する列 = "" Then Exit Sub
        開始 = InputBox(Prompt:="指定の範囲の最初の値を入れてください。", Title:="開始")
            If 開始 = "" Then Exit Sub
        終了 = InputBox(Prompt:="どの値まで含めるかを入れてください。", Title:="終了")
            If 終了 = "" Then Exit Sub
'---ここまで---
'
'
'---■メッセージボックスを表示させる---ここから
        MsgBox "フィルターを実行する列:" & フィルターを実行する列 & vbCrLf & "開始する値:" & 開始 & vbCrLf & "終了する値:" & 終了 & vbCrLf & "範囲の値は正しいですか?"
        確認 = MsgBox("処理を続行しますか?", vbYesNo + vbInformation)
'---ここまで---
'
'
'---■変数 確認 が vbYes ならオートフィルタを実行する。 vbYes 以外ならプロシージャーを抜ける。---ここから
        If 確認 = vbYes Then
            Selection.AutoFilter
            ActiveSheet.Range("A1").AutoFilter Field:=フィルターを実行する列, Criteria1:=">=" & Format(開始, "##"), _
            Operator:=xlAnd, Criteria2:="<=" & Format(終了, "##") 'ActiveSheet.Range("A1").AutoFilter のコードは範囲の一番左上のセルが A1 の場合を意味する。
        Else
            Exit Sub
        End If
'---ここまで---
End Sub

|

« 旅行客は地元の人に気をつかったほうがいいと思う。 | トップページ | 吸血鬼は不老不死なのになぜ "長老" はお年寄なんだろうね? »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: Excelのオートフィルタ(変数で範囲の値を受けとる。):

« 旅行客は地元の人に気をつかったほうがいいと思う。 | トップページ | 吸血鬼は不老不死なのになぜ "長老" はお年寄なんだろうね? »