マクロでのフィルターのかけ方を教えてください

このQ&Aのポイント
  • VBAではなく、マクロでAccessのフィルターをかける方法を教えてください。
  • テーブル1のmojiフィールドには文字列データがあります。
  • テーブル1を基にしたフォームにはmojiと紐付けたテキストボックスがあります。マクロを実行して「文字列1」を抽出するフィルタの実行をしたいのですが、実行するとエラーが発生します。マクロの作り方を教えてください。
回答を見る
  • ベストアンサー

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

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

  • bmgjtu
  • お礼率99% (478/479)

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

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

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

bmgjtu
質問者

お礼

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

関連するQ&A

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

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

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

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

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

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

  • 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で、昇順、降順にソートしたい場合、 そのようなマクロはあるのでしょうか? 宜しくお願いします。

  • 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 "[あ-お]*"と 書きました。

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

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

  • サブフォームにフィルタをかけたい

    サブフォームにフィルタをかけたいのですが エラーになってしまいます。 下記がエラー内容です。 ---------------------------------------------------------- 実行時エラー 438 オブジェクトは、このプロパティまたはメソッドをサポートしていません。 ---------------------------------------------------------- 細かい概要は テーブル1にフィールドがあり、 レコードには「あああ」と入力されています。 テーブル1がレコードソースとされている「フォーム(2)」をサブフォームとして 親フォーム(フォーム名:フォーム(1))に乗せました。 フォーム(1)を開いた時にフォーム(2)にフィルタをかけたいのですが うまくいきません。 オブジェクト名にカッコを付けているため、 Form_フォーム・・・・ というコードは書けないので ---------------------------------------------------------- Private Sub Form_Open(Cancel As Integer) Forms("フォーム(1)").Controls("フォーム(2)").Form.Filter = "フィールド = '" & "*あ*" & "'" Forms("フォーム(1)").Controls("フォーム(2)").FilterOn = True End Sub ---------------------------------------------------------- としています。 Forms("フォーム(1)").Controls("フォーム(2)").FilterOn = True でエラーになりますが、 この行をなくしたら、フィルタがかかりません。 どうすればサブフォームにフィルタをかける事が出来るのでしょうか? ご教示よろしくお願い致します。

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

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

  • Access マクロ SQLは合ってるのに②

    Microsoft Access でマクロ(VBAではない)を制作しています。「検索画面」フォームに情報を入力して「検索実行」を押すと「全項目」フォームがフィルターされて表示するようにしたいです。 制作したマクロ① フォームを開く フォーム 全項目 Where条件式 [投稿者]=[Forms]![検索画面]![投稿者] 制作したマクロ② ローカル変数の設定 変数名 [SQLCode] 値の代入 変数 [LocalVar]![SQLCode] 値 "[投稿者]=[Forms]![検索画面]![投稿者]" フォームを開く フォーム 全項目 Where条件式 [LocalVar]![SQLCode] ローカル変数の削除 変数 [LocalVar]![SQLCode] このマクロを実行したところ、マクロ①は正しく実行されましたが、マクロ②はフィルターされずにフォームが表示されました。 どこを直せば良いのか教えてください。

  • フィルターオプションのマクロ登録について

    Excel2016のフィルターオプションのマクロ登録について Excel2016で名簿データを作成しています。 フィルターオプションを使用して、地区ごとのデータをそれぞれ別シートに作成していますが、 「マクロの登録」の存在を初めて知ったため、登録してみました。 (マクロについては全くの初心者です) マクロの実行まではうまくいったのですが、元データを更新した後に、マクロを実行しても A列の番号だけが抽出され、詳細内容が反映されません。 (前回に抽出されたものをすべて消してやり直せば反映されます) 原因として考えられることがあれば教えてください。 マクロの内容は以下の通りです。 (元データは「練習」としています) よろしくお願いいたします。 ----------------------------------------------------------- Sub 地区別() ' ' 地区別 Macro ' ' Application.CutCopyMode = False Application.CutCopyMode = False Sheets("練習").Range("テーブル8[#All]").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("A1:A2"), CopyToRange:=Range("A4"), Unique:=False End Sub

専門家に質問してみよう