オートフィルタ

記事
IT・テクノロジー

作成

Dim オートフィルタ As Object
オートフィルタ = シート.createFilterDescriptor(True)
オートフィルタ.ContainsHeader = True

フィルタ条件を登録

Dim フィルタ条件の配列(条件数 - 1) As New com.sun.star.sheet.TableFilterField
With フィルタ条件の配列(0)
    .Field = 列番号
    条件
End With
...
オートフィルタ.setFilterFields(フィルタ条件の配列())
列番号
セル範囲の左端が 0

実行

セル範囲.filter(オートフィルタ)
※ セル範囲にはヘッダ行を含めること

フィルタ条件のリセット

すべて
Dim オートフィルタ As Object
オートフィルタ = シート.createFilterDescriptor(True)
セル範囲.filter(オートフィルタ)

フィルタ条件

 文字列

等しい
With フィルタ条件の配列(i)
    .Field = 列番号
    .Operator = com.sun.star.sheet.FilterOperator.EQUAL
    .StringValue = "文字列"
End With
正規表現
オートフィルタ.UseRegularExpressions = True

With フィルタ条件の配列(i)
    .Field = 列番号
    .Operator = com.sun.star.sheet.FilterOperator.EQUAL
    .StringValue = "正規表現"
End With

 数値

等しい
With フィルタ条件の配列(i)
    .Field = 列番号
    .Operator = com.sun.star.sheet.FilterOperator.EQUAL
    .IsNumeric = True
    .NumericValue = 数値
End With

 複数の条件

OR
With フィルタ条件の配列(0)
    .Field = 列番号
    条件
End With

With フィルタ条件の配列(1)
    .Field = 列番号
    条件
    .Connection = com.sun.star.sheet.FilterConnection.OR
End With
...
※ 2つ目以降の条件にOR条件を追加すること
値の配列からループで条件を作成
Dim 配列 As Variant
配列 = Array(値1, ...)

Dim フィルタ条件の配列(UBound(配列)) As New com.sun.star.sheet.TableFilterField

For i = 0 To UBound(配列)
    With フィルタ条件の配列(i)
        .Field = 列番号
        条件

        If i > 0 Then
            .Connection = com.sun.star.sheet.FilterConnection.OR
        End If
    End With
Next

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す