プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説します。前回から応用編として実用的なExcelアプリの作り方を解説しています。今回は、データ処理のキモとなる「検索」をマクロで実装してみましょう。頭の体操に打ってつけですよ【Windows 10、Excel 2016に対応】。
プログラミング初心者を対象に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.