AutoFilterオブジェクト
AutoFilterオブジェクトについての解説になります。
目次
AutoFilterオブジェクトとは
AutoFilterオブジェクトは、指定されたワークシートのオートフィルタを示します。
AutoFilter オブジェクトを取得するには、AutoFilter プロパティを使います。Filters メソッドを使うと、各列のフィルタのコレクションを取得します。Range メソッドを使うと、フィルタ後の全体のセル範囲を表す Range オブジェクトを取得します。次の使用例は、現在のフィルタ、および新しく適用するフィルタでのフィルタ条件とアドレスを保存します。
Dim w As Worksheet
Dim filterArray()
Dim currentFiltRange As String
Sub ChangeFilters()
Set w = Worksheets("Crew")
With w.AutoFilter
currentFiltRange = .Range.Address
With .Filters
ReDim filterArray(1 To .Count, 1 To 3)
For f = 1 To .Count
With .Item(f)
If .On Then
filterArray(f, 1) = .Criteria1
If .Operator Then
filterArray(f, 2) = .Operator
filterArray(f, 3) = .Criteria2
End If
End If
End With
Next
End With
End With
w.AutoFilterMode = False
w.Range("A1").AutoFilter field:=1, Criteria1:="S"
End Sub
ワークシートで AutoFilter オブジェクトを作成するには、ワークシート上のセル範囲に対して手動または Range オブジェクトで AutoFilter メソッドを実行し、オートフィルタを実行する必要があります。次の例は、上記の例で保存したモジュール レベルの値を使用して、最初のオートフィルタの Crew ワークシートに戻します。
Sub RestoreFilters()
Set w = Worksheets("Crew")
w.AutoFilterMode = False
For col = 1 To UBound(filterArray(), 1)
If Not IsEmpty(filterArray(col, 1)) Then
If filterArray(col, 2) Then
w.Range(currentFiltRange).AutoFilter field:=col, _
Criteria1:=filterArray(col, 1), _
Operator:=filterArray(col, 2), _
Criteria2:=filterArray(col, 3)
Else
w.Range(currentFiltRange).AutoFilter field:=col, _
Criteria1:=filterArray(col, 1)
End If
End If
Next
End Sub
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。