質問: vbaではなく、マクロでのフィルターのかけ方を教え accessのvbaではなく、マクロでのフィルターのかけ方を教えてください。 テーブル1には フィールド名:moji データ:テキスト型 文字列1 文字列2 ・ ・ ・ というデータがあります。 テーブル1を基にしたフォームには 画像のように、 コントロールソースにmojiを紐付けたテキストボックスを配置しました。 その際、マクロを実行して「文字列1」を抽出するフィルタの実行をしたいのですが マクロの作り方がわかりません。 マクロのアクションは「フィルタの実行」にしたのですが フィルタ名には何を入れればいいのでしょうか? とりあえずtestと入れました。 次に、where条件式には [forms]![フォーム1]![moji]="文字列1" といれました。 この時点ではエラーにならないのですが フォームを開いて、マクロ1を実行すると 「このウィンドウでは"applyfilter/フィルタの実行"アクションを実行できません。」 となってしまいます。 マクロの作り方を教えてください。
回答: > フィルタ名には何を入れればいいのでしょうか? where条件式 を設定するのなら、フィルタ名は必要ありません。 > 「このウィンドウでは"applyfilter/フィルタの実行"アクションを実行できません。」 これは、作り方の問題ではなく、実行方法の問題です。 アクティブなフォームに 対して フィルタを実行するのですが、 マクロをデザインで開いて実行したり、 データベースウィンドウから実行すると その時点で、フォームはアクティブではありませんから (フォーカスは、マクロとか、データベースウィンドウにある) 「このウィンドウでは・・・」 のエラーになります。 フォームを選択しておいて、メニューバー等から、「マクロの実行」 で 実行してください。 あるいは、そのフォームにコマンドボタンを配置し クリック時にマクロを実行するのも良いでしょう。 ここまで上手くいっても、 実際にフィルタは思ったようにはかからないでしょう。 問題は > 次に、where条件式には > [forms]![フォーム1]![moji]="文字列1" フィルタは フォームのコントロール にかけるものではなく レコードソースのフィールドに対してかけるものです。 テキストボックス [txtmoji] のコントロールソースが [moji] なら where条件式は [moji]="文字列1" になります。