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
| 固定リンク
コメント