DoCmd メソッド (Access)DoCmd.ApplyFilter method (Access)

Applyfilterメソッドは、Visual Basic で "ApplyFilter/フィルターの実行" アクションを実行します。The ApplyFilter method carries out the ApplyFilter action in Visual Basic.


ApplyFilter(FilterNameWhereConditionControlName)expression.ApplyFilter (FilterName, WhereCondition, ControlName)

expression: DoCmd オブジェクトを表す変数。expression A variable that represents a DoCmd object.


名前Name 必須 / オプションRequired/Optional データ型Data type 説明Description
FilterNameFilterName 省略可能Optional VariantVariant カレント データベースの フィルターまたは クエリの有効な名前を表す 文字列式を指定します。A string expression that is the valid name of a filter or query in the current database. このメソッドを使用してサーバーフィルターを適用する場合は、引数_FilterName_を空白にする必要があります。When using this method to apply a server filter, the FilterName argument must be blank.
WhereConditionWhereCondition 省略可能Optional VariantVariant 有効な SQL WHERE 句を文字列式で指定します。ただし、WHERE という語を指定する必要はありません。A string expression that is a valid SQL WHERE clause without the word WHERE.
ControlNameControlName 省略可能Optional VariantVariant


"ApplyFilter/フィルターの実行" アクションを使用すると、テーブル、フォーム、またはレポートに、テーブル内のレコードまたはフォームまたはレポートの基になるテーブルまたはクエリのレコードを制限または並べ替えることができます。You can use the ApplyFilter action to apply a filter, a query, or an SQL WHERE clause to a table, form, or report to restrict or sort the records in the table or the records from the underlying table or query of the form or report. For reports, you can use this action only in a macro specified by the report's OnOpen event property.For reports, you can use this action only in a macro specified by the report's OnOpen event property.

[!メモ] このアクションは、サーバー フィルターを使用する場合のみ、SQL WHERE 句を適用するために使用します。You can use this action to apply an SQL WHERE clause only when applying a server filter. サーバー フィルターは、保存されているプロシージャのレコード ソースには適用できません。A server filter cannot be applied to a stored procedure's record source.


適切なデータを提供するフィルターが既に定義されている場合は、 _FilterName_引数を使用できます。You can use the FilterName argument if you've already defined a filter that provides the appropriate data. _WhereCondition_引数を使用すると、制限条件を直接入力できます。You can use the WhereCondition argument to enter the restriction criteria directly. 両方の引数を指定した場合は、WHERE 句はフィルターの結果に適用されます。If you use both arguments, Microsoft Access applies the WHERE clause to the results of the filter. 2 つの引数のうち少なくとも 1 つは指定する必要があります。You must use one or both arguments.

フィルターまたはクエリは、 フォーム ビュー または データシート ビュー で開いているフォームに適用できます。You can apply a filter or query to a form in Form view or Datasheet view.

適用するフィルターおよび WHERE 条件式は、フォームの " filter/フィルター " プロパティまたはレポートの " ServerFilter /サーバーフィルター" プロパティの設定値になります。The filter and WHERE condition that you apply become the setting of the form's Filter property or the report's ServerFilter property.

テーブルまたはフォームを保存すると、そのオブジェクトに現在定義されているすべてのフィルターが保存されますが、次にオブジェクトが開かれたときに自動的にフィルターは適用されません。ただし、オブジェクトを保存する前に、オブジェクトに適用した並べ替えが自動的に適用されます。When you save a table or form, Access saves any filter currently defined in that object, but will not apply the filter automatically the next time the object is opened (although it will automatically apply any sort that you applied to the object before it was saved).

フォームを開いたときに自動的にフィルターを適用するには、"ApplyFilter/フィルターの実行" アクションが定義されたマクロを指定するか、またはフォームの "OnOpen/開く時" イベント プロパティの設定値として DoCmd オブジェクトの ApplyFilter メソッドが定義されたイベント プロシージャを指定します。If you want to apply a filter automatically when a form is first opened, specify a macro containing the ApplyFilter action or an event procedure containing the ApplyFilter method of the DoCmd object as the OnOpen event property setting of the form. "OpenForm/フォームを開く" または "OpenReport/レポートを開く" アクション、あるいはそれらに対応するメソッドを使用してフィルターを適用することもできます。You can also apply a filter by using the OpenForm or OpenReport action, or their corresponding methods. テーブルを最初に開いたときに自動的にフィルターを適用するには、"OpenTable/テーブルを開く" アクションの直後に "ApplyFilter/フィルターの実行" アクションが定義されたマクロを使用してテーブルを開きます。To apply a filter automatically when a table is first opened, you can open the table by using a macro containing the OpenTable action, followed immediately by the ApplyFilter action.

2 つある ApplyFilter の引数のうち、少なくとも 1 つは指定する必要があります。You must include at least one of the two ApplyFilter method arguments. 両方の引数を指定すると、 WhereCondition がフィルターに適用されます。If you enter a value for both arguments, the WhereCondition argument is applied to the filter.

引数 WhereCondition の最大長は 32,768 文字です (マクロ ウィンドウの WhereCondition アクション引数の最大長は 256 文字です)。The maximum length of the WhereCondition argument is 32,768 characters (unlike the WhereCondition action argument in the Macro window, whose maximum length is 256 characters).


次の例では、 ApplyFilterメソッドを使用して、"" フィールドに "キング" という名前を含むレコードだけを表示します。The following example uses the ApplyFilter method to display only records that contain the name "King" in the LastName field.

DoCmd.ApplyFilter , "LastName = 'King'"

次の例は、" ApplyFilter /フィルターの適用" プロパティを使用して、 tglfilterという名前のトグルボタンが選択されたときに表示されるレコードをフィルター処理する方法を示しています。The following example shows how to use the ApplyFilter property to filter the records displayed when a toggle button named tglFilter is chosen.

Private Sub tglFilter_Click()
    With tglFilter
        If .Value = True Then
            .Caption = "P/T"
            .StatusBarText = "only full-timers"
            DoCmd.ApplyFilter , "[Hours]=40"
        ElseIf .Value = False Then
            .Caption = "All"
            .StatusBarText = "only part-timers"
            DoCmd.ApplyFilter , "[Hours]<40"
            .Caption = "F/T"
            .StatusBarText = "all employees"
            .SetFocus 'to activate the button's statusbar-text
        End If
    End With
End Sub

サポートとフィードバックSupport and feedback

Office VBA またはこの説明書に関するご質問やフィードバックがありますか?Have questions or feedback about Office VBA or this documentation? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.