頭の体操! 条件分岐とループでデータ検索を実装できる?フラグの使い方の基本もExcelマクロ/VBAで始める業務自動化プログラミング入門(14)(1/4 ページ)

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

» 2016年10月17日 05時00分 公開
[薬師寺国安PROJECT KySS]

【頭の体操】Excelで「完全一致」検索を実現するには、どのようなマクロにすればいいのか?

 プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説する本連載「Excelマクロ/VBAで始める業務自動化プログラミング入門」。前回から応用編として「個人情報管理システム」を作り始めている。前回の「VB初心者でもできるExcelアプリ開発&正規表現を使うには」では「データ入力」画面を作成した。その作成した「データ入力」画面で、データを登録していった結果の表が図1だ。

図1 データ入力フォームから登録したデータ一覧

 今回は、この登録して行ったデータの中から、「氏名で検索」「住所で検索」「電話番号で検索」という3つの機能を付けて検索ができるようにしてみる。

 「氏名で検索」の場合、同姓同名の人物が存在した場合は、最初に見つかったデータしか表示できないような仕組みになっている。その場合は、検索方法を変えて「電話番号」で検索という方法を採っていただきたい。

 検索方法は「あいまい検索」ではなく「完全一致」検索としている。リストボックスに「氏名」「住所」「電話番号」を表示させ、そこから選択した値での検索も可能にしているので、今回は「完全一致」検索方法を採った。

 「検索」処理といったら難しく思うかもしれないが、特別難しいコードが出てくるわけでもなく、理解しやすいはずなので、「頭の体操」と思って、ぜひ挑戦してみてほしい。

データ検索画面を作る

 まず、前回の「入力フォームの作成」と同様にフォームを作成しよう。前回と同じ手順を踏むと、「UserForm2」がプロジェクト内の「フォーム」フォルダーに追加される(図2)。

図2 UserForm2が追加された

 また、これも前回の記事を参考に、フォームの右隅下をドラッグして画面全体を大きくする。図3程度の大きさにまで広げる。

図3 UserForm2のフォーム全体を広げる

 ここでUserForm2と表示されている標題を「データ検索フォーム」という標題に変更する。

 UserForm2のプロパティの[Caption]に「データ検索フォーム」と指定する。するとフォームの標題が変更される(図4)

図4 UserForm2の[Caption]プロパティに「データ検索フォーム」と指定

各コントロールの配置とプロパティの設定

 配置するコントロールは表のようになる。

表 配置する各種コントロール
コントロール名 オブジェクト名
オプションボタン 氏名オプションボタン
オプションボタン 住所オプションボタン
オプションボタン 電話番号オプションボタン
ラベル(データ件数) デフォルト値
ラベル 件数ラベル
ラベル(氏名で検索) デフォルト値
ラベル(住所で検索) デフォルト値
ラベル(電話番号で検索) デフォルト値
テキストボックス 検索氏名テキストボックス
テキストボックス 検索住所テキストボックス
テキストボックス 検索電話番号テキストボックス
ボタン メニューボタン
ボタン 氏名ボタン
ボタン 住所ボタン
ボタン 電話番号ボタン
フレーム デフォルト値
ラベル(ID) デフォルト値
ラベル(氏名) デフォルト値
ラベル(性別) デフォルト値
ラベル(生年月日) デフォルト値
ラベル(郵便番号) デフォルト値
ラベル(住所) デフォルト値
ラベル(電話番号) デフォルト値
ラベル(メール) デフォルト値
ラベル IDラベル
ラベル 氏名ラベル
ラベル 性別ラベル
ラベル 生年月日ラベル
ラベル 郵便番号ラベル
ラベル 住所ラベル
ラベル 電話番号ラベル
ラベル メールラベル
ボタン 削除ボタン
リストボックス 一覧リストボックス

 表の各種コントロールをレイアウトすると図5のようになる。

図5 各種コントロールをレイアウトした

 「氏名ボタン」「住所ボタン」「電話番号ボタン」の「実行」ボタンは初期の状態では、プロパティの[Enabled]にFalseを指定して使用を不可としておく(図6)。

図6 一例として「氏名ボタン」の[Enabled]にFalseを指定した

 「検索氏名テキストボックス」と「検索住所テキストボックス」のプロパティから[IMEMode]に「fmIMEModeOn」を指定して日本語入力を可能にしておく。また「検索電話番号テキストボックス」には[IMEMode]に「fmIMEModeOff」を指定して「英数文字」の入力を可能にしておく。

 また「フレーム」のプロパティ[Caption]には「カード表示」と指定しておく。[書体]は「Meiryo UI」を、[文字サイズは「14」を指定している。各コントロールの[書体][文字サイズ]は特別ここで指定している値にこだわることはない。読者の好きな[書体][文字サイズ]を選択すればいいし、文字色を指定したいならプロパティから[ForeColor]を指定すればいい。

       1|2|3|4 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。