• ベストアンサー
  • 暇なときにでも

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

accessのVBAではなく、マクロでのフィルターのかけ方を教えてください。 テーブル1には フィールド名:moji データ:テキスト型 文字列1 文字列2 ・ ・ ・ というデータがあります。 テーブル1を基にしたフォームには 画像のように、 コントロールソースにmojiを紐付けたテキストボックスを配置しました。 その際、マクロを実行して「文字列1」を抽出するフィルタの実行をしたいのですが マクロの作り方がわかりません。 マクロのアクションは「フィルタの実行」にしたのですが フィルタ名には何を入れればいいのでしょうか? とりあえずtestと入れました。 次に、Where条件式には [Forms]![フォーム1]![moji]="文字列1" といれました。 この時点ではエラーにならないのですが フォームを開いて、マクロ1を実行すると 「このウィンドウでは"ApplyFilter/フィルタの実行"アクションを実行できません。」 となってしまいます。 マクロの作り方を教えてください。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数5403
  • ありがとう数2

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

  • ベストアンサー
  • 回答No.1
  • m3_maki
  • ベストアンサー率64% (272/423)

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

関連するQ&A

  • 【アクセスVBA】テーブルにフィルタをかけたい

    Sub マクロ() DoCmd.OpenTable "Tテーブル", acViewNormal, acEdit DoCmd.ApplyFilter , "番号 = '123'" End Sub Tテーブルを開き、フィルタをかけたいのですが テーブルを開くまではできるのですが、 フィルタをかける行では 『ApplyFilter アクションの実行はキャンセルされました。』 になってしまいます。 DoCmd.OnFilter , "質問番号 = '0'" でもエラーになり、コードの実行すら行えません。 フォームではなくテーブルにフィルタをかけるにはどうすればいいでしょうか? よろしくお願いします。

  • ACCESS で マクロの中でフィルタを使用する方法

    ACCESS初心者です フォームを使用してテーブルのデータを単にマクロでフィルタ実行をかけて検索をしたいのですが、where条件式のところで文字列をあいまい検索したいのです。(フォームでテーブルの項目の一部を入力して検索をかけたい)like * を使用したいのですが記述の方法がわかりません。教えてください。 よろしくお願いいたします!

  • VBAによるフィルターでレコードを抽出するには

    レコードの抽出をマクロで行っております。 アクション欄に「フィルターの実行」を設定しWhere条件式に[氏名フリガナ] Like [Forms]![フォーム名]![抽出テキスト名] & "*" Or [氏名] Like [Forms]![フォーム名]![抽出テキスト名] & "*"  と記述して上手くいってます。 これをVBAで行いたいのですが、上記マクロをツールの「マクロをVisual Basic に変換」した式を使用したらエラーになりました。 ちなみにマクロ変換した式は DoCmd.ApplyFilter " ", "[氏名フリガナ] Like [Forms]![フォーム名]![抽出テキスト名] & ""*"" Or [氏名] Like [Forms]![フォーム名]![抽出テキスト名] & ""*""" です。 どこを訂正したら上手くいくのかご指導をお願い致します。

  • Access2003 マクロ フィルタ

    こんにちは、 Access2003 マクロ フィルタで あ行だけを抽出しなさいという命令を書いたところ、 [顧客名称(読み)] Like "[あ-お]*"と書くと正常にあ行のリストを表示 [Forms]![F_顧客リスト]![顧客名称(読み)] Like "[あ-お]*"というように[Forms]![F_顧客リスト]!を追加して書くと何も表示されなくなり正常な動作をしてくれませんでした。 いったいなぜでしょうか? 何かお分かりの方がいましたら教えてください。 よろしくお願いします。 顧客リストから絞り込むようなフォームを作ろうとしています。 1.[F_顧客リスト]というフォームに[frm_五十音フィルタ]という[オプショングループを作成] 2.[frm_五十音フィルタ]オプショングループ内に[tgl_あ]というトグルボタンと作成 3.[frm_五十音フィルタ]オプショングループ内に[btn_顧客名称(読み)]というコマンドボタンと作成 4.マクロで[条件]に[Forms]![F_顧客リスト]![frm_五十音フィルタ]=2 [アクション]に[フィルタの実行] Where条件式に上記のように、 [顧客名称(読み)] Like "[あ-お]*"あるいは、 [Forms]![F_顧客リスト]![顧客名称(読み)] Like "[あ-お]*"と 書きました。

  • エクセル-マクロ-オートフィルタ

    エクセルのマクロで、 オートフィルタでデータを抽出する場合、 引数Criterial,Criterial2で文字列を指定しますが、 Criterial3…とできません。 ・3個以上抽出したい場合 ・「*~」以外を抽出したい場合 がわかりません。 教えて下さいmm。

  • Accessボタンで並び替え

    ACCESS97を使用しています。 フォーム上のボタンで、並び替えを実行したいのです。 対象フォームは、あるデータ(テーブル名:AAA)の 項目BBと項目CCの条件を使って選択クエリーGG を元に 帳票フォームで表示しています。 フォームFFF上には、BBと CCの入力テキストBOX、BB,CCがあるととします。 BBとCCでフィルタをかける場合、 DoCmd.ApplyFilter "", "[GG]![BB] =[Forms]![FFF]![BB]" & _ "AND [GG]![CC]= [Forms]![FFF]![CC]" というマクロでフィルタ実行されたデータが表示されますが、 項目BB、CCで、昇順、降順にソートしたい場合、 そのようなマクロはあるのでしょうか? 宜しくお願いします。

  • アクセスのフィルタについて

    アクセスのフォーム[フォーム1]にフィルタをかける処理についてですが、入力欄の一つ[データ1]に値が入力されていないものだけを抽出する処理をマクロで行いたいと思っておりますが、上手くいきません。(何も抽出されない) フィルタの命令文を下記で書いておりますが、間違っているでしょうか。 Forms![フォーム1]![データ1] = Null

  • マクロでオートフィルタを使い、抽出した表の特定の列に一定のデータを入れたい

    マクロを使い、オートフィルタをし、A列の人名でデータを抽出しました。 この抽出した表のB列全てに、「本社」という文字列を入れる為には、どうすれば良いでしょうか? 皆様の知恵をお貸し下さい。 よろしくお願い致します。

  • Access2002のフィルタ機能について

    Access2002を使用しています。マクロのフィルタを使って抽出をしたいのですが・・・。 テーブル構造ですが 氏名    備考    備考2 ○○          ㋹ ××    B     ㋹ △△    A     ㋹ ◆◆    B というものがあります。 今したいのは 備考と備考2に条件をいれ抽出させたいのですが どちらにも条件が入るときは抽出されるのですが どちらか一方にのみ条件を入れた場合うまく抽出できません。 たとえば 備考2 で㋹を抽出とした場合。 氏名    備考    備考2 ○○          ㋹ ××    B     ㋹ △△    A     ㋹ 上記結果が必要なのですが 氏名    備考    備考2 ××    B     ㋹ △△    A     ㋹ 結果はこうなります。 フィルタの条件式は [テーブル]![備考2] Like IIf([Forms]![フォーム]![検索]=Null,"*","*" & [Forms]![フォーム]![検索] & "*") And [テーブル]![備考] Like IIf([Forms]![フォーム]![備考検索]=Null,"*","*" & [Forms]![フォーム]![備考検索] & "*") 元のテーブルにデータが入力されていないものが抽出で出てきません。 どーしたらよいのでしょうか??教えてください。

  • Accessマクロの抽出でどうしたらいいでしょうか?

    図のようにフォームには商品テーブルのフィールドを配置しています。 上のテキストボックスには、[商品グループ]の値と等しいレコードを抽出するよう入力します。 [抽出]ボタン:フィルタを実行 [解除]ボタン:フィルタを解除して、すべてのレコードを表示 それぞれクリック時のイベントに割り当てたマクロは以下です。 《マクロ名》《アクション/引数》  《値》  抽出    フィルタの実行         Where条件式     [商品グループ]=[Forms]![抽出]![txtキー]  解除    全レコードの表示        値の代入         アイテム      [txtキー]         式         NULL このようにしましたが、フィルタはフォームの起動時初回は出来ますが、[解除]ボタンを押して[抽出]ボタンを押すと再度の抽出はできません。 初回の1回だけは抽出できるんですけど・・・続けて抽出できるようにするにはどうしたらいいでしょうか?