Office 2019 Access 2019

テキストボックスの文字列でレコードを抽出(マクロビルダーで設定)

投稿日:2020年9月13日 更新日:

Accessでフォームのテキストボックスに入力した文字列でレコードを抽出する方法です。

ここでは、テーブルを基にウィザードを使って表形式のフォームを作成します。そして、フォームヘッダーにテキストボックスとコマンドボタン挿入して、マクロアクションで作成します。

また、フィルターされたレコードを解除するボタンと、レコードの件数を自動表示するテキストボックスも設置します。

テキストボックスの文字列を条件にしてレコードを抽出

参考ここでのフォームの表示は、[タブ付きドキュメント](既定)です。[ウィンドウを重ねて表示する]と[タブ付きドキュメント]の違いについては、以下の記事で解説しています。

[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い

Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。 昔からAccessを使用している方に ...

続きを見る

フォームウィザードを使って表形式のフォームを作成

[T_商品]という名前のテーブルがあります。このテーブルを基にフォームを作成します。

テーブルのデータシートビュー

テーブル[T_商品]を選択して、[作成]タブの[フォーム]グループにある[フォームウィザード]をクリックします。

[作成]タブの[フォームウィザード]

フォームウィザードが表示されます。

フォームに表示するフィールドを選択します。

テーブルは、[T_商品]が選択されています。もしも、テーブル名が異なっているのであれば、▼ボタンをクリックして選択します。

中央にあるフィールド選択ボタンで、ここでは[すべてのフィールドを選択](>>)ボタンをクリックします。

フォームウィザードでフィールドを選択

参考フィールド選択ボタンは、フィールドを選択したり、解除することができます。

ボタン 操作
> フィールドを選択
>> すべてのフィールドを選択
< フィールドを解除
<< すべてのフィールドを解除

[次へ]ボタンをクリックします。

フォームウィザードの[次へ]ボタン

フォームのレイアウトを指定します。ここでは、[表形式]を選択します。[次へ]ボタンをクリックします。

フォームのレイアウトの選択の違いについては、以下で解説しています。ここではテキストボックスやボタンを設置するフォームヘッダーが必要なので[表形式]を選択します。

フォームウィザードで選択できるレイアウトについて

フォームウィザードでフォームのレイアウトを指定

フォームを入力して[完了]ボタンをクリックします。

フォームウィザードでフォーム名を指定

完成したフォームがフォームビューで表示されます。

フォームの完成

参考ウィザードではなく[作成]タブの[その他のフォーム]から[複数のアイテム]を選択して作成することもできます。

帳票フォームの作成

コントロールの位置や大きさを調整

[レイアウトビュー]や[デザインビュー]に切り替えて、コントロールの大きさや位置などを調整します。

以下の画像は、レイアウトビューです。

レイアウトビューでの編集は、実際のレコードのデータを表示したまま調整できるので、コントロールの幅などを調整する時は便利です。

レイアウトビューでフォームのコントロールをカスタマイズ

Accessのフォームには、デザインビュー、レイアウトビュー、フォームビューの3つの表示方法があります。 コントロールのサイズや位置などを調 ...

続きを見る

フォームのレイアウトビュー

ヘッダーのタイトルなども変更して、以下のようなフォームを作成しました。

このフォームのヘッダーにテキストボックスを挿入して、テキストボックス内の文字列でレコードを抽出するコマンドボタンと、フィルターされたレコードを解除するボタンを設置します。

フォームでコントロールやタイトルを変更

テキストボックスの挿入

フォームをデザインビューで表示します。

フォームのデザインビュー

[デザイン]タブの[コントロール]グループにある[テキストボックス]を選択して、フォームヘッダーへドラッグします。

[テキストボックス ウィザード]が表示されたら、[キャンセル]ボタンをクリックして閉じてください。

参考テキストボックスを挿入すると、ラベルも一緒に挿入されますが、テキストボックスのみ挿入したい時は、[Ctrl]キーを押しながらドラッグします。

テキストボックスの挿入

ラベルとテキストボックスに名前を付けます。

[デザイン]タブの[ツール]グループにある[プロパティシート]をクリックします。または、[F4]キーを押すと、プロパティを表示できます。

自動的に名前が付与されていますが、より分かりやすい名前に変更します。

[その他]タブの[名前]のテキストボックスに入力します。ここでは、[検索]とします。

このテキストボックスの名前は、後でマクロを設定するときに使用しますので、しっかり覚えておいてください。

テキストボックスの名前を変更

参考テキストボックスに入力する時、カタカナのみなどIMEの指定をしたい場合は、プロパティの[その他]タブの[IME入力モード]で設定します。

プロパティの[その他]タブの[IME入力モード]

コマンドボタンの挿入

今度は、フォームヘッダーにレコードを抽出するためのコマンドボタンを挿入します。

[デザイン]タブの[コントロール]グループにある[ボタン]をクリックして、テキストボックスの近くでドラッグします。

[コマンドボタンウィザード]が表示されたら、[キャンセル]ボタンをクリックします。

[デザイン]タブの[コントロール]グループにある[ボタン]

コマンドボタンのプロパティの[書式]タブにある[標題]に[検索]と入力します。[標題]とはボタンに表示される文字列のことです。

コマンドボタンの標題

参考[標題]と[名前]は異なるものです。ここでは、コマンドボタンの名前は[検索ボタン]にします。

ボタン名は、[その他]タブの[名前]のテキストボックスでも入力できます。

コマンドボタンの[標題]と[名前]

マクロビルダーを起動して埋め込みマクロを設定

検索ボタンを選択して、プロパティを表示します。

[イベント]タブの[クリック時]にある[ビルダー選択]ボタン[...]をクリックします。

[検索]ボタンのプロパティ[イベント]タブ

[ビルダーの選択]ダイアログボックスが表示されます。

[マクロビルダー]を選択して、[OK]ボタンをクリックします。

[ビルダーの選択]ダイアログボックス

参考[ビルダーの選択]で[コードビルダー]を選択して設定する方法は、以下の記事で解説しています。

同じデータベースを使って解説していますので、分かりやすいと思います。

テキストボックスでレコード抽出(コードビルダーを起動して設定)

Accessのフォームで検索用のテキストボックスを作成して、そのテキストボックスに入力した文字列の部分一致でレコードを抽出する方法を紹介しま ...

続きを見る

フィルターの設定

マクロツールが表示されます。

▼ボタンをクリックして、一覧から[フィルターの設定]を選択します。

[アクションカタログ]から選択してマクロウィンドウへ追加する方法もあります。

アクションの追加[フィルターの設定]

以下の画面になりますので、

[Where条件式]のテキストボックスに以下を入力します。あいまい検索の条件式になります。

フォーム[F_商品検索]の[検索]テキストボックス内の文字列を含んだ商品名を検索するという意味です。

[商品名] Like "*" & [Forms]![F_商品検索]![検索] & "*"

[Where条件式]のテキストボックスに入力

[上書き保存]ボタンをクリックした後、[閉じる]ボタンをクリックしてマクロツールを閉じます。

[閉じる]ボタンをクリックしてマクロツールを閉じる

プロパティには、[埋め込みマクロ]と表示されます。

プロパティのクリック時[埋め込みマクロ]

[埋め込みマクロ]と[独立マクロ]については、以下の記事で記しています。

独立マクロと埋め込みマクロの違いを知って使い分け

Accessのマクロには、独立マクロと埋め込みマクロというのがあります。 独立マクロは、マクロを個別に作成して、後でオブジェクトのプロパティ ...

続きを見る

参考入力していると、以下のように入力支援のための補助ツールが表示されますので、利用するとミスが少なくなると思います。ダブルクリックで入力できます。

入力支援のための補助ツール

また、[Where条件式]にミスがあると、左側に[!]マークが表示されますので、間違いがないか確認してください。

Where条件式にミスがあるときの表示

テキスト型の条件

主なテキスト型の条件の記述方法です。文字列の指定は["](ダブルクォーテーション)で囲みます。

記述例 意味
"●" 完全一致
Not "●" 一致しない
Like "●*" 指定した文字列から始まる
Not Like "●*" 指定した文字列で始まらない
Like "*●*" 指定した文字列を含む
Not Like "*●*" 指定した文字列を含まない
Like "*●" 指定した文字列で終わる
Not Like "*●" 指定した文字列で終わらない

クエリの抽出条件の例 - Access(Microsoft)

参考クエリの抽出条件の書き方に悩んだときは、フィルター実行後に[クエリとして保存]を選択すると、抽出条件の書き方を確認できるので便利です。

フィルター実行後にクエリとして保存(抽出条件の書き方が分からない時も)

Accessのテーブルやフォーム、レポートでレコードを抽出するには、フィルターボタンや選択フィルターを使います。 標準で使用できる抽出条件は ...

続きを見る

パラメータークエリーでもあいまい検索でレコードを抽出することができます。

パラメータークエリを作成して毎回異なる条件でレコードを抽出

パラメータークエリは、クエリを実行すると[パラメーターの入力]ダイアログボックスが表示され、そのテキストボックスに条件を入力してレコードを抽 ...

続きを見る

検索ボタンをクリックしてレコードの抽出を確認

フォームビューに切り替えて、動作を確認します。

デザインビューからフォームビューに切り替えるショートカットキーは、[F5]キーです。

テキストボックスに文字を入力して、[検索]ボタンをクリックすると、下のように商品名の一部に検索文字を含む商品名が抽出されます。

フォームビューで動作を確認

フィルターを解除する場合は、[ホーム]タブの[並べ替えとフィルター]グループにある[フィルターの解除]ボタンをクリックします。

または、移動ボタンの右にある[フィルター適用]をクリックします。

[ホーム]タブと[移動ボタン]横のフィルター解除ボタン

フィルターが解除されると、[フィルター処理なし]と表示されます。

フィルター解除後

フィルターを解除するボタンを作成

レコードを抽出したら、フィルターを解除するボタンを設置しておくと、より便利です。

[検索]ボタンを作成したときと同じように[マクロビルダー]を起動して作成していきます。

フォームをデザインビューで開いて、コマンドボタンを挿入します。

ボタンの[標題]は[解除]、名前は[解除ボタン]とします。

[イベント]タブの[クリック時]にある[ビルダー選択]ボタン[...]をクリックします。

[解除]ボタンの挿入

[ビルダーの選択]ダイアログボックスで、マクロビルダーを選択して[OK]ボタンをクリックします。

[ビルダーの選択]ダイアログボックスで[マクロビルダー]を選択

フィルターの解除

マクロツールが表示されます。

▼ボタンをクリックして、一覧から[全レコードの表示]を選択します。

[全レコードの表示]は一覧の最後から3番目にあります。

[全レコードの表示]アクション

または、マクロアクション[フィルター/並べ替えの解除]を選択してもOKです。

[フィルター/並べ替えの解除]を選択

テキストボックスの値を空にする

フィルターの解除と同時に、テキストボックスの中の文字列も消しておくと、次の検索が便利になります。

[デザイン]タブの[表示/非表示]グループにある[すべてのアクションを表示]をクリックします。

[デザイン]タブの[表示/非表示]グループにある[すべてのアクションを表示]

[全レコードの表示]の下にある[新しいアクションの追加]の▼ボタンをクリックします。

そして、プルダウンから[値の代入]を選択します。最後から4番目にあります。

[アイテム]のテキストボックスにテキストボックスの名前を[[検索]]入力します。

[式]には、[Null]と入力します。

そして、[上書き保存]ボタンをクリックした後、[閉じる]ボタンをクリックしてマクロツールを閉じます。

埋め込みマクロで[値の代入]を設定

フォームビューに切り替えて、動作を確認します。

[検索]ボタンをクリックしてレコードを抽出した後、[解除]ボタンをクリックしてみます。

フォームビューで[解除]ボタンを実行して確認

フィルターが解除されて、テキストボックスの値も消えます。

[解除]ボタンをクリックしたフォーム

参考以下の記事でもコマンドボタンでレコードを抽出する方法を記しています。

フィールドの同じ値の数をカウントするにはクエリでグループ化

クエリのグループ化は、グループごとに集計できる便利な機能です。 たとえば、1つのフィールド内の同じデータをグループ化して、合計やカウント、平 ...

続きを見る

検索ボックスが空白の場合はメッセージを表示するには

必ずしも必要とは思いませんが、検索ボックスが空白のまま[検索]ボタンをクリックされた場合は、メッセージを表示してキーワードを入力するように促す方法を紹介します。

検索キーワードの入力を促すメッセージウィンドウ

[検索ボタン]の[埋め込みマクロ]を表示して、以下のように変更していきます。

[新しいアクションの追加]の▼ボタンをクリックして、[If]を選択します。[If]は先頭にあります。

[新しいアクションの追加]の▼ボタンをクリック

[If]のテキストボックスに、以下のように入力します。[検索]は、テキストボックスの名前です。

そして、すぐ下にある[新しいアクションの追加]の▼ボタンをクリックします。

IsNull([検索])

Ifのアクションを入力

[メッセージボックス]を選択します。一覧の中ほどにあります。

[メッセージ]のテキストボックスにメッセージウィンドウに表示したい内容を入力します。

[メッセージの種類]は以下の4つが用意されています。ここでは[なし]を選択しています。

メッセージの種類

メッセージのタイトルには、任意の文字列を入力します。空白にした場合は、[Microsoft Access]と表示されます。

Accessのオプションでアプリケーションタイトルを入力している場合は、そのタイトルが表示されます。

MsgBox関数について

そして、[Elseの追加]をクリックします。

メッセージボックスのアクションを追加

[If]のアクションを先頭に持っていきたいので、[上へ移動]ボタンをクリックします。

アクションを上へ移動

そして、[フィルターの設定]のアクションを[上へ移動]ボタンをクリックして、[Else]の後ろへ表示します。

アクションを上へ移動

以下のように並べられたら、OKです。マクロウィンドウを保存して、フォームビューで動作を確認してみてください。

埋め込みマクロでIf文を設定

参考If文の設定方法は、以下の記事内の[OK]ボタンに埋め込みマクロを設定でも解説しています。

パスワード入力フォームを作成してパスワードが合えば開くようにする

Accessでパスワード入力フォームを作成して、パスワードを入力してパスワードが合えばフォームを開くようにする方法です。 注意ここでは、Ac ...

続きを見る

以下の記事では、レコード検索時に該当するレコードがない場合にメッセージを表示する方法を解説しています。

レコード検索時に該当するレコードがない場合はメッセージを表示する

フォームに検索ボックス(テキストボックス)を設置して、管理番号を入力したら該当のレコードを抽出する仕組みを作ります。 その時、検索ボックスに ...

続きを見る

タブ移動の設定

フォームをデザインビューで表示して、[デザイン]タブの[ツール]グループにある[タブオーダー]をクリックします。

[デザイン]タブの[ツール]グループにある[タブオーダー]

[タブオーダー]ダイアログボックスが表示されます。

[フォームヘッダー]を選択して、タブオーダーの設定が、以下のように[検索、検索ボタン、解除ボタン]の順になっていると操作しやすいと思います。

順番は、ドラッグで入れ替えることができます。

[タブオーダー]ダイアログボックス

タブオーダーについては、以下の記事で解説しています。

フォームのタブオーダーとタブストップの設定

タブオーダーとは、キーボートの[Tab]キーや[Enter]キーを押して、カーソルがフォーム内のコントロールを移動するときの順番のことです。 ...

続きを見る

抽出したレコード数を自動表示

抽出されたレコード数をテキストボックスに表示することもできます。

フォームをデザインビューで表示して、非連結のテキストボックスを挿入します。

そのテキストボックスのプロパティを表示して、[データ]タブの[コントロールソース]に[=Count(*)]と入力します。

=Count(*)

テキストボックスのプロパティ[データ]タブの[コントロールソース]

フォームビューで確認すると、以下のように抽出されたレコード数が表示されます。

フォームビューで確認

該当する商品名がない時にメッセージを表示するには

商品検索しても該当する商品名がない場合にメッセージを出す方法です。

レコード数を表示しているテキストボックスを活用します。

レコード数を表示しているテキストボックスの名前を変更

テキストボックスの名前を分かりやすくするために[カウント]にします。

テキストボックスのプロパティの[その他]タブの[名前]に入力します。

テキストボックスの名前変更

[検索]ボタンの[埋め込みマクロ]にマクロアクションを追加

[検索]ボタンの埋め込みマクロを表示します。

[検索]ボタンのプロパティを表示して、[イベント]タブの[クリック時]の[ビルダー選択]ボタン[…]をクリックします。

[検索]ボタンのプロパティの[イベント]タブ-[クリック時]の[ビルダー選択]ボタン

[If文の最後]の下のマクロアクションで[If]を選択します。

そして、以下を入力します。

[カウント]=0

続けて、マクロアクション[メッセージボックス]を追加して、メッセージを入力します。ここでは、以下のように入力します。

該当する商品名がありません。

マクロアクション[全レコードの表示]を選択します。

そして、マクロアクション[値の代入]を選択して[アイテム]に[検索]、[式]に[Null]と入力します。

[値の代入]は、[デザイン]タブの[表示/非表示]グループにある[すべてのアクションを表示]をクリックしないと表示されませんので注意してください。

最後に、マクロアクション[コントロールの移動]を選択して、[検索]を指定します。

マクロウィンドウは、上書きして保存します。

[検索]ボタンの埋め込みマクロにマクロアクションを追加

フォームの[検索]ボックスに商品名にない文字が入力されると、メッセージが表示されます。

[検索]ボックスに商品名にない文字が入力されたときのメッセージウィンドウ

そして、メッセージウィンドウの[OK]ボタンをクリックすると、すべてのレコードが表示されます。

[検索]ボックスも空になり、カーソルも[検索]ボックスに移動します。

すべてのレコードが表示されたフォーム

参考分割フォームにテキストボックスを挿入してイベントプロシージャで設定する方法は、以下の記事で解説しています。同じデータベースを使って解説していますので、分かりやすいと思います。

テキストボックスでレコード抽出(コードビルダーを起動して設定)

Accessのフォームで検索用のテキストボックスを作成して、そのテキストボックスに入力した文字列の部分一致でレコードを抽出する方法を紹介しま ...

続きを見る

抽出条件をクエリで設定することもできます。クエリで設定すると、抽出データを出力するのも簡単です。

クエリの抽出条件にテキストボックスの値を設定してレコードを抽出

Accessのクエリでレコードを抽出する方法です。 クエリの抽出条件には、フォームのテキストボックスの値を指定することができます。 また、ク ...

続きを見る

以下では、コンボボックスの値で抽出する方法を解説しています。

フォームのコンボボックスの値でレコードを抽出

フォームにコンボボックスを作成して、そのリストから選択して一致するレコードを抽出できるようにします。 ウィザードを使い、コンボボックスの値は ...

続きを見る

埋め込みマクロのWhere条件式で設定しておくと、オブジェクト名を変更した場合などは自動的に修正されるので便利だと思います。

ただ、名前の自動修正は完璧ではありません。データベースのサイズも大きくなります。

開くときに意図しないパラメーターの入力ウィンドウが表示される

Accessで作成したデータベースのテーブルや、クエリ、フォーム、レポートを開こうとすると、[パラメータの入力]を求めるウィンドウが表示され ...

続きを見る

[Accessのオプション]で[名前の自動修正オプション]は、既定ではオンになっています。

名前の自動修正オプションを設定する - Access(Microsoft)

[Accessのオプション]の[名前の自動修正オプション]

検索

ほかの記事も検索してみませんか?

Access / Excel / PowerPoint / Word

関連記事30件

Profile

-Office 2019 Access 2019

Copyright © 2001-2024 初心者のためのOffice講座 All Rights Reserved.

Copyright© 初心者のためのOffice講座 , 2024 AllRights Reserved Powered by AFFINGER4.