リンクユニット

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条件式]のテキストボックスに入力

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

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

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

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

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

[埋め込みマクロ]と[独立マクロ]の違いについて

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

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

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

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

テキスト型の条件

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

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

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

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

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

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

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

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

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

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

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

フィルター解除後

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

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

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

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

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

[イベント]タブの[クリック時]の[...]をクリックします。

[解除]ボタンの挿入

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

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

フィルターの解除

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

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

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

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

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

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

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

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

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

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

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

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

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

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

そして、[閉じる]ボタンをクリックして、マクロツールを閉じます。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

IsNull([検索])

Ifのアクションを入力

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

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

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

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

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

アクションを上へ移動

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

アクションを上へ移動

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

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

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

パスワードを入力してフォームを開くようにする

Accessでパスワードを入力して、パスワードが合えばフォームを開くようにする方法です。 注意ここでは、Accessのオプションでウィンドウ ...

続きを見る

タブ移動の設定

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

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

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

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

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

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

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

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

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

続きを見る

レコード数を自動表示

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

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

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

=Count(*)

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

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

フォームビューで確認

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

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

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

続きを見る

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

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

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

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

続きを見る

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

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

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

Profile

執筆者/はま

もっと理解したいあなたへ

おすすめ記事と広告

-Office 2019 Access 2019

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

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