こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBAではなく、マクロでのフィルターのかけ方を教え

accessのVBAではなく、マクロでのフィルターのかけ方を教えてください。

テーブル1には
フィールド名:moji
データ:テキスト型

文字列1
文字列2



というデータがあります。

テーブル1を基にしたフォームには
画像のように、
コントロールソースにmojiを紐付けたテキストボックスを配置しました。

その際、マクロを実行して「文字列1」を抽出するフィルタの実行をしたいのですが
マクロの作り方がわかりません。

マクロのアクションは「フィルタの実行」にしたのですが
フィルタ名には何を入れればいいのでしょうか?
とりあえずtestと入れました。
次に、Where条件式には
[Forms]![フォーム1]![moji]="文字列1"
といれました。
この時点ではエラーにならないのですが
フォームを開いて、マクロ1を実行すると
「このウィンドウでは"ApplyFilter/フィルタの実行"アクションを実行できません。」
となってしまいます。

マクロの作り方を教えてください。

投稿日時 - 2011-10-22 11:49:06

QNo.7087046

暇なときに回答ください

質問者が選んだベストアンサー

> フィルタ名には何を入れればいいのでしょうか?

Where条件式 を設定するのなら、フィルタ名は必要ありません。

> 「このウィンドウでは"ApplyFilter/フィルタの実行"アクションを実行できません。」

これは、作り方の問題ではなく、実行方法の問題です。
アクティブなフォームに 対して フィルタを実行するのですが、
マクロをデザインで開いて実行したり、
データベースウィンドウから実行すると
その時点で、フォームはアクティブではありませんから
(フォーカスは、マクロとか、データベースウィンドウにある)
「このウィンドウでは・・・」 のエラーになります。

フォームを選択しておいて、メニューバー等から、「マクロの実行」 で 実行してください。
あるいは、そのフォームにコマンドボタンを配置し
クリック時にマクロを実行するのも良いでしょう。
  
ここまで上手くいっても、
実際にフィルタは思ったようにはかからないでしょう。

問題は
> 次に、Where条件式には
> [Forms]![フォーム1]![moji]="文字列1"

フィルタは フォームのコントロール にかけるものではなく
レコードソースのフィールドに対してかけるものです。
テキストボックス [txtMoji] のコントロールソースが [moji] なら
Where条件式は
 [moji]="文字列1"
になります。

投稿日時 - 2011-10-23 10:38:47

お礼

実行してみたら出来ました。
ご親切にありがとうございます。

投稿日時 - 2011-10-25 20:45:56

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問