このソリューションには、適度な量の VBA が必要です (VBA を必要としないソリューションは考えられません)。ユーザーの選択をモジュール レベルの変数に格納し、マスターApplyFilters
サブルーチンを使用してフィルターを適用します。
たとえば、各チェックボックスに AfterUpdate イベントを与えます。このイベントは次の 2 つのことを行います。
- ユーザーの選択でモジュールレベル変数を設定します
- ApplyFiltersサブを開始します
ユーザーの選択はすべてモジュール レベルの変数に保存されるため、ApplyFiltersはそれらをすべて見ることができます。そうなる:
- すべてのモジュール レベル変数を取得し、マスター文字列を作成します (ヒント、プレースホルダーが必要な場合は、を使用します
1=1
) 。
- その文字列をサブフォームのフィルターとして適用します。
その他の注意事項: メイン フォームからサブフォームのコントロールにアクセスするのは簡単です。サブフォームのフィルターを文字列 NewFilter に変更するには、次のことを試してください。
Forms!MyMainFormsName!MySubFormsName.Filter=NewFilter