ユーザーが [フォームでフィルター]、[ 高度なフィルター/並べ替え]、または [ フォームでサーバー フィルター] を選択してフィルター ウィンドウを開いたときに発生します。
構文
式。Filter (キャンセル、 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 イベントをキャンセルすると、アクセス フィルター ウィンドウが開かない。
特定のコントロールが、[フォーム フィルター] ウィンドウまたは [フォームサーバーフィルタ] ウィンドウに表示されないようにしたり、これらのウィンドウで使用できないようにしたりできます。 Filter イベント プロシージャまたはマクロでコントロールを非表示または無効にすると、そのコントロールは [フォームによるフィルター] ウィンドウまたは [フォームによるサーバー フィルター] ウィンドウで非表示または無効になり、フィルター条件の設定に使用できません。 ApplyFilter イベントを使用すると、フィルターの適用後、またはフィルターがフォームから削除されたときに、このコントロールを表示または使用可能にできます。
例
次の例は、ユーザーがフィルターを作成しようとしたときに "受注" フォームの "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 のサポートおよびフィードバックを参照してください。