Form.Filter イベント (Access)
ユーザーが [フォームによるフィルター]、[詳細なフィルター/並べ替え]、または [フォームによるサーバー フィルター] を選択してフィルター ウィンドウを開いたときに発生します。
構文
式。フィルター (Cancel、 FilterType)
expressionForm オブジェクトを表す変数です。
パラメーター
名前 | 必須 / オプション | データ型 | 説明 |
---|---|---|---|
Cancel | 必須 | 整数型 (Integer) | フィルター ウィンドウを開くかどうかを設定します。 引数 Cancel を True (1) に設定すると、フィルター ウィンドウが開かなくなります。 DoCmd オブジェクトの CancelEvent メソッドを使用しても、フィルター ウィンドウを開かないようにできます。 |
FilterType | 必須 | 整数型 (Integer) | ユーザーが開こうとしているフィルター ウィンドウ。 FilterType 引数には、次のいずれかの組み込み定数を指定できます。
|
注釈
このイベントが発生したときに、マクロまたはイベント プロシージャを実行するには、" OnFilter/フィルター設定時" プロパティをマクロ名または "[Event Procedure]"/"[イベント プロシージャ]" に設定します。
Filter イベントを使用して、次の処理を行います。
フォームに対するフィルターを解除します。 これには、Filter のマクロまたはイベント プロシージャで、フォームの "Filter/フィルター" プロパティまたは "ServerFilter/サーバー フィルター" プロパティを長さ 0 の文字列 (" ") に設定します。 これは、余分な条件が新しいフィルターに表示されないようにする場合に特に便利です。 たとえば、 フィルター 選択機能を使用すると、使用する条件 (フォームで選択したテキスト) が Filter または ServerFilter プロパティ WHERE 句式に追加され、[ フォームによるフィルター ] ウィンドウと [高度なフィルター/並べ替え ] ウィンドウまたは [サーバー フィルター ] ウィンドウの両方に表示されます。 これらの前の抽出条件を、 Filter イベントを使用して削除できます。
新しいフィルターに既定値を入力します。 それには、"Filter/フィルター" プロパティまたは "ServerFilter/サーバー フィルター" プロパティに、抽出条件としてこの値を設定します。 たとえば、 製品 フォームのすべてのフィルターに現在の製品 (製品フォームの [中止済み ] コントロールが選択されていない 製品 ) のみを表示することができます。
Access のフィルター ウィンドウの代わりに独自のフィルター ウィンドウを使います。 Filter イベントが発生したら、カスタム フォームを開き、このフォームのエントリを使用して "Filter/フィルター" プロパティまたは "ServerFilter/サーバー フィルター" プロパティを設定し、元のフォームにフィルターを適用できます。 ユーザーがこのカスタム フォームを閉じると、元のフォームの FilterOn または ServerFilterByForm プロパティを True (1) に設定してフィルターを適用します。 Filter イベントをキャンセルすると、Access フィルター ウィンドウが開かなくなります。
特定のコントロールが、[フォーム フィルター] ウィンドウまたは [フォームサーバーフィルタ] ウィンドウに表示されないようにしたり、これらのウィンドウで使用できないようにしたりできます。 Filter イベント プロシージャまたはマクロでコントロールを非表示または無効にした場合、コントロールは [フォームでフィルター] ウィンドウまたは [サーバー フィルター] ウィンドウで非表示または無効になり、フィルター条件を設定するために使用できません。 ApplyFilter イベントを使用すると、フィルターの適用後、またはフィルターがフォームから削除されたときに、このコントロールを表示または使用可能にできます。
例
次の例は、ユーザーがこのフィールドでフィルター処理できないように、ユーザーがフィルターを作成しようとしたときに Orders フォームの TotalDue コントロールを無効にする方法を示しています。 TotalDue 値を持ち、他のフィルター条件を満たすレコードは、常にフィルター処理されたフォームに表示されます。 また、ユーザーは、[フィルター/並べ替えの編集] ウィンドウではなく [フォーム フィルター] ウィンドウを使用しなければならなくなります。
この例を試すには、TotalDue コントロールを含む Orders フォームに次のイベント プロシージャを追加します。 TotalDue コントロールを使用する [詳細なフィルター/並べ替え] ウィンドウを使用して、フィルターを作成してみてください。 また、[フォーム フィルター] ウィンドウを使用して、同じフィルターを作成します。
Private Sub Form_Filter(Cancel As Integer, FilterType As Integer)
If FilterType = acFilterByForm Then
Forms!Orders!TotalDue.Enabled = False
ElseIf FilterType = acFilterAdvanced Then
MsgBox "The best way to filter this form is to use the " _
& "Filter By Form command or toolbar button.", vbOKOnly + vbInformation
Cancel = True
End If
End Sub
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示