Windows 10 & Office 2016 Access 2016

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

投稿日:2017年1月7日 更新日:

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

ここでは、コードビルダーを起動して、VBAコードを記述して設定する方法を紹介します。

テキストボックスの条件でレコードを抽出

参考ここでは、オブジェクトの表示は[ウィンドウを重ねて表示]の設定にしています。[ウィンドウを重ねて表示する]と[タブ付きドキュメント]の違いについては、以下の記事で解説しています。

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

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

続きを見る

テーブルの確認

下のようなテーブルがあります。テーブル名は[T_商品]です。

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

デザインビューは以下のようになっています。

テーブルのデザインビュー

分割フォームの作成

このテーブルを基に分割フォームを作成します。

テーブルを選択した状態で、[作成]タブにある[フォーム]グループの[その他のフォーム]から[分割フォーム]をクリックします。

[作成]タブの[その他のフォーム]の[分割フォーム]

フォームはレイアウトビューで表示されますので、コントロールの大きさなどを調整しておきます。

デザインビューに切り替えて調整しても構いません。以下の画像はデザインビューです。

デザインビューでコントロールの調整

フォームビューに切り替えると、下のようなフォームが完成します。

この分割フォームは、上がレコードの単票、下がデータシートになっていて、とても便利です。

検索や並べ替えもExcelのフィルターと同じように操作できます。

個人で使う場合は、これだけでも十分な機能を備えてると思うのですが。

やはり共有で使用する場合は、このフィルターの使い方に慣れていない方もいるので考慮しないといけません。

分割フォームの完成

参考分割フォームの作成については、以下の記事で解説しています。

分割フォーム(単票フォームとデータシートを同時に表示)の作成と使い方

Accessでは、画面を2つに分け[単票フォーム]と[データシート]を同時に表示できる[分割フォーム]というのがあります。Access200 ...

続きを見る

また、レコード数が多いとフィルターボタンをクリックしても、リストが表示されない場合があります。

Accessでフィルターボタンをクリックしてもリストが表示されない

これは、[Accessのオプション]の設定で変更すると解決できます。以下の記事で解説しています。

フィルターボタンをクリックしてもリストが表示されない場合

検索用テキストボックスの作成

そこで、商品名を簡単に検索したり、抽出できるようにするために検索用のテキストボックスを作成して、入力したテキストから部分一致検索ができるようにしたいと思います。

フォームをデザインビューで開いて、非連結のテキストボックスを1つ作成します。

[非連結]とはテーブルやクエリのデータがもとになっていないコントロールのことを指します。

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

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

ウィザードの方が分かりやすい場合は、そのまま次へ進んで完成させても構いません。

テキストボックスの作成

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

非連結のテキストボックスを選択した状態で、[デザイン]タブの[プロパティシート]をクリックしてプロパティを表示させます。

[その他]タブで[名前]を[検索]とします。

ラベルの標題は[商品名検索]にします。

ラベルの標題は、プロパティからでもいいですし、ラベルを選択して、そのまま入力してかまいません。

プロパティの[その他]タブで[名前]に入力

参考テキストボックスとラベルの操作については、以下の記事を参考にしてください。個別に移動させる方法も解説しています。

テキストボックス作成時(フィールドの追加時)にラベルを挿入したくない

Accessのフォームやレポートのデザインビューでテキストボックスを作成すると、自動的にラベルも挿入されてしまいます。 これは、意外と面倒に ...

続きを見る

検索ボタンの作成

そして、テキストボックスの横に[検索]ボタンを作成します。

[デザイン]タブの[ボタン]をクリックして[詳細]エリアのテキストボックスの横でドラッグしてボタンを作成します。

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

コマンドボタンを選択して、プロパティシートの[書式]タブで[標題]を[検索]にします。

コマンドボタンの設置と名前変更

そして、[その他]タブを選択して[名前]を[検索ボタン]などに変更します。

プロパティでボタンの名前付け

ビルダーの選択

今度は[イベント]タブをクリックして、[クリック時]の[ビルダー選択]ボタン[…]をクリックします。

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

[ビルダーの選択]ダイアログボックスでは、以下の3つの選択肢があります。

  • マクロビルダー
  • 式ビルダ
  • コードビルダー

[コードビルダー]を起動して設定する方法を紹介します。

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

参考ここで[マクロビルダー]を選択して設定する方法は、以下の記事で解説しています。埋め込みマクロの設定になります。コードが苦手な方は、マクロアクションの方が分かりやすいと思います。

ここで使用しているデータベースと同じものを使って解説しています。

また、検索テキストボックスが空白のまま検索ボタンをクリックすると、メッセージを表示してキーワードを入力するように促す方法も解説しています。抽出したレコード数の自動表示と、あいまい検索でも該当するレコードがない場合は、メッセージを表示する仕組みも解説しています。

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

Accessでフォームのテキストボックスに入力した文字列でレコードを抽出する方法です。 ここでは、テーブルを基にウィザードを使って表形式のフ ...

続きを見る

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

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

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

続きを見る

コードビルダーを起動して[VBA]で設定

[ビルダーの選択]ダイアログボックスが表示されたら、[コードビルダー]を選択して[OK]ボタンをクリックします。

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

下のように書き込みます。

[検索]はテキストボックスの名前になります。

Like演算子を使用して、あいまい検索をします。

Me.Filter = "商品名 like'*" & 検索 & "*'"

Me.FilterOn = True

VBAコードの説明

イベントプロシージャ

テキスト型の条件

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

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

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

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

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

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

続きを見る

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

フォームビューに切り替えて、検索してみます。

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

テキストボックスでレコードを抽出

参考抽出したレコードの件数をテキストボックスに自動的に表示することもできます。

重複しないデータの個数とレコードの抽出件数をテキストボックスに自動表示

Accessのフォームに重複しないデータの個数を表示する方法を紹介します。 下のようにフォームヘッダーのテキストボックスに部署数の重複しない ...

続きを見る

フィールドの非表示

分割フォームのデータシートに[商品名検索]フィールドは不要なので、右クリックしてショートカットメニューから[フィールドの非表示]をクリックして非表示にしておきます。

ショートカットメニューの[フィールドの非表示]

参考フィールドの非表示設定は、単票フォームの操作に影響することもあります。以下の記事で解説しています。

分割フォームのデータシートのフィールドを非表示にする時の注意点

Accessの分割フォームでは、データシートのフィールドは簡単に非表示に設定することができます。 ですが、データシートでフィールドを非表示に ...

続きを見る

フィルター解除ボタンの作成

また、レコードの抽出を解除するためのボタンも設置しておくと便利です。

別のボタンを1つ作成して、検索ボタンの横に設置します。

そして、クリック時のイベントに下のように書き込みます。

Me.FilterOn = False

イベントプロシージャは下のようになります。

イベントプロシージャ

参考[解除]ボタンを押した時に、検索テキストボックスの中を空にしたい場合は、以下のように記述してください。

Me.FilterOn = False

Me.検索.Value = ""

後は、フォームヘッダーでタイトル名を変更したり、ボタンの位置などを調整して完成させて、フォームに名前を付けて保存します。

[F12]キーを押すと[名前を付けて保存]ダイアログボックスを表示できます。

フォームヘッダーのタイトル名を変更

フォームヘッダーのロゴの挿入方法などは、以下の記事で解説しています。

フォームヘッダー/フッターの表示(タイトル・ロゴ・日付と時刻の挿入)

Access2013のフォームで[フォームのヘッダー/フッター]を表示する方法です。 フォームをデザインビューで開くと、以下のようになってい ...

続きを見る

関連コンボボックスから抽出する方法は、以下の記事で解説しています。

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

Accessの分割フォームのデータシートビューには、Excelのフィルターと同じようにフィルターボタンがあり、Excelの操作と同じように様 ...

続きを見る

抽出ではなく、検索だけでよければ以下の記事を参照してください。ウィザードで簡単に作成できます。

コンボボックス作成ウィザードを使って検索用コンボボックスを簡単作成

Accessのフォームで検索用コンボボックスを作成する方法です。 コンボボックス作成ウィザードを使って簡単に作成することができます。 テーブ ...

続きを見る

[検索と置換]ダイアログボックスをコマンドボタンで起動して検索

Accessでレコードの検索を行う場合、[検索と置換」ダイアログボックス表示して使用することは多いと思います。 この[検索と置換]ダイアログ ...

続きを見る

検索

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

Access / Excel / PowerPoint / Word

Profile

執筆者/はま

-Windows 10 & Office 2016 Access 2016

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

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