.Dialogs(xlDialogFilter)...オートフィルタオプションウィンドウの事ですが、xl2000, xl2003のヘルプには引数が載っていません。(XPは未確認)
msdn にも記載がありません。
『組み込みダイアログ ボックス引数一覧』
『Built-In Dialog Box Argument Lists [Excel 2003 VBA Language Reference]』
実際には、引数を指定し、オプションウィンドウを開く事ができます。
引数の順番は、AutoFilter メソッドに準じています。
[AutoFilter メソッド]
expression.AutoFilter(Field, Criteria1, Operator, Criteria2)
[Dialogs オブジェクト]
Application.Dialogs(xlDialogFilter).Show Field, Criteria1, Operator, Criteria2
例えばユーザー操作を伴うマクロを作成する時などに、簡易的に使えるかもしれません。
ユーザー操作によって抽出条件を指定する場合、InputBox などで条件を直接入力してもらったり、予め作成したデータリストから選択してもらったりする方法が考えられます。ユーザー操作の簡便性を考えると、リスト選択方式が好まれる事が多いでしょう。
この時に、抽出フィールドが変動する場合は、その都度、重複データを除いたリストを作成する必要があります。
Dictionary オブジェクトを使いこなせればそれほど難しくありませんが、Excel の基本機能を活用する事で対応できるケースもあるのではないでしょうか。
コード作成アプローチの選択肢の1つとして、知っておいて損はないかもしれません。
msdn にも記載がありません。
『組み込みダイアログ ボックス引数一覧』
『Built-In Dialog Box Argument Lists [Excel 2003 VBA Language Reference]』
実際には、引数を指定し、オプションウィンドウを開く事ができます。
引数の順番は、AutoFilter メソッドに準じています。
[AutoFilter メソッド]
expression.AutoFilter(Field, Criteria1, Operator, Criteria2)
[Dialogs オブジェクト]
Application.Dialogs(xlDialogFilter).Show Field, Criteria1, Operator, Criteria2
例えばユーザー操作を伴うマクロを作成する時などに、簡易的に使えるかもしれません。
Sub try() Dim r As Range 'フィルタ範囲 With ActiveSheet '.Cells(3).Select 'オートフィルタ解除 .AutoFilterMode = False On Error Resume Next ActiveCell.AutoFilter If Err.Number <> 0 Then Exit Sub On Error GoTo 0 '■オートフィルタダイアログ表示 '■引数は Field,Criteria1,Operator,Criteria2 '例)Application.Dialogs(xlDialogFilter).Show 2, ">", xlAnd, "<" Application.Dialogs(xlDialogFilter).Show ActiveCell.Column '.FilterMode = True...つまりキャンセルされていないなら。 If .FilterMode Then 'フィルタ範囲をセット Set r = .AutoFilter.Range '抽出件数のチェック If WorksheetFunction.Subtotal(3, r) > _ WorksheetFunction.Subtotal(3, r.Rows(1)) Then 'ここでいろいろな処理など。 .PrintOut preview:=True End If Set r = Nothing End If .AutoFilterMode = False End With End Sub
ユーザー操作によって抽出条件を指定する場合、InputBox などで条件を直接入力してもらったり、予め作成したデータリストから選択してもらったりする方法が考えられます。ユーザー操作の簡便性を考えると、リスト選択方式が好まれる事が多いでしょう。
この時に、抽出フィールドが変動する場合は、その都度、重複データを除いたリストを作成する必要があります。
Dictionary オブジェクトを使いこなせればそれほど難しくありませんが、Excel の基本機能を活用する事で対応できるケースもあるのではないでしょうか。
コード作成アプローチの選択肢の1つとして、知っておいて損はないかもしれません。