検索
連載

全社員プログラマー時代も目前? VB初心者でもできるExcelアプリ開発&正規表現を使うにはExcelマクロ/VBAで始める業務自動化プログラミング入門(13)(4/4 ページ)

プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説します。今回から応用編として実用的なExcelアプリの作り方を解説していく。まずはデータ登録処理から【Windows 10、Excel 2016に対応】。

Share
Tweet
LINE
Hatena
前のページへ |       

Excel VBAで正規表現を使うには

 今回は、「郵便番号」「電話番号」「メール」で「正規表現」を使って入力チェックを行っている。

 通常の状態では、Excel VBAでは正規表現が使えないので、VBEメニューの[ツール]→[参照設定]と選択して、「Microsoft VBScript Regular Expression 5.5」を選び、[OK]ボタンをクリックすることで正規表現の使用を可能にする必要がある(図16)。


図16 「Microsoft VBScript Regular Expression 5.5」を選択

 正規表現を使うための新しいRegExpクラスのインスタンスmyRegExオブジェクトを宣言する。正規表現にのっとっているかどうかの結果を格納するブール型の変数regCheckを宣言する。

 「氏名テキストボックス」「郵便番号テキストボックス」「住所テキストボックス」「電話番号テキストボックス」「メールテキストボックス」にデータが入力されていない場合は警告メッセージを表示する。

 またグローバル変数「性別」に値が入っていない場合も警告メッセージを表示する。

 「郵便番号」「電話番号」「メール」の正規表現チェックを行う。Patternプロパティに、該当する正規表現を指定する。

 正規表現の詳細については「正規表現言語 - クイック リファレンス(MSDN)」を参考にしてほしい。

 入力した値が、指定した正規表現のパターンと一致していない場合は、警告メッセージを表示して処理を抜ける(図17)。


図17 「メール」が不正で警告メッセージが表示された

データ登録処理

 次はデータ登録の処理だ。リスト1で「終端行を取得してデータが入っていると、その下の行にデータを追加する処理」を解説しているので、その処理を利用すると後は簡単だ。

 「Cells(行番号,列番号)」プロパティを使って、下記表の値をそれぞれ指定する。

表2 各セルに指定する値
セル 指定する値
ID 「IDラベル.Caption」の値
氏名 「氏名テキストボックス.Text」の値
性別 グローバル変数「性別」の値
生年月日 「生年月日.Text」の値
郵便番号 「郵便番号テキストボックス.Text」の値
住所 「住所テキストボックス.Text」の値
電話番号 「電話番号テキストボックス.Text」の値
メール 「メールテキストボックス.Text」の値

 リスト1でも解説しているように、例えば、「Cells(lastRow,1)」は「ID」のセルに、データが入力されていれば、その下のセルから順番にデータを登録していくようになる。他の項目セルについても同様だ。

 最後に「ID」項目に表示させるIDとなる文字列「K」と年月日時分秒を連結した値を表示して、次のデータの入力に備えている。

「メニュー」ボタンをクリックしたときの処理

 次は、フォームの右隅上にある「メニュー」ボタンをクリックしたときの処理だ(リスト5)。

Private Sub メニューボタン_Click()
  Worksheets("メニュー").Select
  UserForm1.Hide
End Sub
リスト5 「メニュー」ボタンをクリックしたときの処理

 「メニュー」シートを選択して図1のメニュー画面を表示させるが、この時点でメニュー画面はまだ作成していない。メニュー画面は、後の連載で作成する予定なので、現時点でこの「メニュー」ボタンをクリックすると何もないシートの画面が表示される。HideメソッドでUserForm1を隠している。

 「データ入力」を実行すると図18のようになる。


図18 「データ入力」を実行した画面

次回は「データ検索」処理

 以上で「データ入力」の処理は完成だ。コード自体もそれほど長くないし、データの入力されている次のセルにデータを追加していく処理さえ理解できれば、楽勝な内容だったのではないかと思う。

 正規表現を使用している点が一番の問題だったかもしれない。筆者は正規表現については詳しく知らないため、解説ができなかった。正規表現についてちゃんと学びたい方は、記事「.NET Frameworkがサポートする正規表現クラスを徹底活用する」などWeb上でたくさんの情報が公開されているので、そちらを参考にしてほしい。

 ただ、「データ入力」で膨大な件数のデータを入力しても、目的のデータを探せなければ、データを蓄積していく意味がない。次回は、「データ検索」について解説する。お楽しみに。

■更新履歴

【2016/10/7】Windows 10、Excel 2016に対応しました。


参考書籍

著者プロフィール

PROJECT KySS 薬師寺 国安(やくしじ くにやす)

1950年生まれ。フリーVBプログラマ。高級婦人服メーカーの事務職に在職中、趣味でVBやActiveXに取り組み、記事を執筆。2003年よりフリー。.NETやRIAに関する執筆多数。Windowsストアアプリも多数公開中(約270本)。

 

Microsoft MVP for Development Platforms - Client App Dev (Oct 2003-Sep 2012)。

Microsoft MVP for Development Platforms - Windows Phone Development(Oct 2012-Sep 2013)。

Microsoft MVP for Development Platforms - Client Development(Oct 2013-Sep 2014)。

PROJECT KySSは、1997年に薬師寺聖と結成したコラボレーション・ユニット


Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る