頭の体操! 条件分岐とループでデータ検索を実装できる?フラグの使い方の基本も:Excelマクロ/VBAで始める業務自動化プログラミング入門(14)(1/4 ページ)
プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説します。前回から応用編として実用的なExcelアプリの作り方を解説しています。今回は、データ処理のキモとなる「検索」をマクロで実装してみましょう。頭の体操に打ってつけですよ【Windows 10、Excel 2016に対応】。
【頭の体操】Excelで「完全一致」検索を実現するには、どのようなマクロにすればいいのか?
プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説する本連載「Excelマクロ/VBAで始める業務自動化プログラミング入門」。前回から応用編として「個人情報管理システム」を作り始めている。前回の「VB初心者でもできるExcelアプリ開発&正規表現を使うには」では「データ入力」画面を作成した。その作成した「データ入力」画面で、データを登録していった結果の表が図1だ。
今回は、この登録して行ったデータの中から、「氏名で検索」「住所で検索」「電話番号で検索」という3つの機能を付けて検索ができるようにしてみる。
「氏名で検索」の場合、同姓同名の人物が存在した場合は、最初に見つかったデータしか表示できないような仕組みになっている。その場合は、検索方法を変えて「電話番号」で検索という方法を採っていただきたい。
検索方法は「あいまい検索」ではなく「完全一致」検索としている。リストボックスに「氏名」「住所」「電話番号」を表示させ、そこから選択した値での検索も可能にしているので、今回は「完全一致」検索方法を採った。
「検索」処理といったら難しく思うかもしれないが、特別難しいコードが出てくるわけでもなく、理解しやすいはずなので、「頭の体操」と思って、ぜひ挑戦してみてほしい。
データ検索画面を作る
まず、前回の「入力フォームの作成」と同様にフォームを作成しよう。前回と同じ手順を踏むと、「UserForm2」がプロジェクト内の「フォーム」フォルダーに追加される(図2)。
また、これも前回の記事を参考に、フォームの右隅下をドラッグして画面全体を大きくする。図3程度の大きさにまで広げる。
ここでUserForm2と表示されている標題を「データ検索フォーム」という標題に変更する。
UserForm2のプロパティの[Caption]に「データ検索フォーム」と指定する。するとフォームの標題が変更される(図4)
各コントロールの配置とプロパティの設定
配置するコントロールは表のようになる。
コントロール名 | オブジェクト名 |
---|---|
オプションボタン | 氏名オプションボタン |
オプションボタン | 住所オプションボタン |
オプションボタン | 電話番号オプションボタン |
ラベル(データ件数) | デフォルト値 |
ラベル | 件数ラベル |
ラベル(氏名で検索) | デフォルト値 |
ラベル(住所で検索) | デフォルト値 |
ラベル(電話番号で検索) | デフォルト値 |
テキストボックス | 検索氏名テキストボックス |
テキストボックス | 検索住所テキストボックス |
テキストボックス | 検索電話番号テキストボックス |
ボタン | メニューボタン |
ボタン | 氏名ボタン |
ボタン | 住所ボタン |
ボタン | 電話番号ボタン |
フレーム | デフォルト値 |
ラベル(ID) | デフォルト値 |
ラベル(氏名) | デフォルト値 |
ラベル(性別) | デフォルト値 |
ラベル(生年月日) | デフォルト値 |
ラベル(郵便番号) | デフォルト値 |
ラベル(住所) | デフォルト値 |
ラベル(電話番号) | デフォルト値 |
ラベル(メール) | デフォルト値 |
ラベル | IDラベル |
ラベル | 氏名ラベル |
ラベル | 性別ラベル |
ラベル | 生年月日ラベル |
ラベル | 郵便番号ラベル |
ラベル | 住所ラベル |
ラベル | 電話番号ラベル |
ラベル | メールラベル |
ボタン | 削除ボタン |
リストボックス | 一覧リストボックス |
表の各種コントロールをレイアウトすると図5のようになる。
「氏名ボタン」「住所ボタン」「電話番号ボタン」の「実行」ボタンは初期の状態では、プロパティの[Enabled]にFalseを指定して使用を不可としておく(図6)。
「検索氏名テキストボックス」と「検索住所テキストボックス」のプロパティから[IMEMode]に「fmIMEModeOn」を指定して日本語入力を可能にしておく。また「検索電話番号テキストボックス」には[IMEMode]に「fmIMEModeOff」を指定して「英数文字」の入力を可能にしておく。
また「フレーム」のプロパティ[Caption]には「カード表示」と指定しておく。[書体]は「Meiryo UI」を、[文字サイズは「14」を指定している。各コントロールの[書体][文字サイズ]は特別ここで指定している値にこだわることはない。読者の好きな[書体][文字サイズ]を選択すればいいし、文字色を指定したいならプロパティから[ForeColor]を指定すればいい。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Excelマクロ/VBAリファレンス用途別・キーワード別一覧超まとめ
- ピボットテーブルとは何か──「そもそも、何をする機能か」を理解する
Excelを通じて「ピボットテーブル」の基礎を学び、データ分析を実践するまでを習得する本連載。初回はピボットテーブルの基礎と、「どんなことができるのか」を解説する。 - どんなビジネスにも欠かせないリレーショナルデータベースの基礎知識と作り方――テーブル、レコード、フィールド、主キーとは
Accessを通じて、初心者がリレーショナルデータベースやSQLの基本を学び、データベースを使った簡単なシステムの作り方を習得する本連載。初回はデータベースの基本を理解し、Accessを使い始めてみよう。