「データ入力フォーム」の基本のプログラムを記述し、処理を指定した。しかしこのプログラムには三つの問題点がある。
これらの問題を解決する処理を、リスト1のVBAのコードに追加していく。
「年齢テキストボックス」に入力された値が数値かどうかを判定するには、「IsNumeric関数」を使用する。IsNumeric関数は、値が数値として評価できるかどうかを調べ、結果を「ブール値」で返す。数値として認識できる場合は「True」、それ以外は「False」を返す。
この関数を使って「VBA」を書くとリスト2のようになる。
If IsNumeric(年齢テキストボックス.Value) = False Then MsgBox ("数値を入力してください。") Exit Sub Else myRecordset("年齢") = Me.年齢テキストボックス End If
入力された値が数値ではない場合は、警告メッセージを出して処理を抜け、数値の場合は、「年齢」フィールドに「年齢テキストボックス」の値を登録する。
ここの処理では、下記の「制御構文」を使用している
If 条件式 Then 処理1 Else 処理2 End If
条件式によって処理を分岐する。条件式が成立すれば「処理1」を実行し、条件式が成立しなかったら「処理2」を実行する。
次は「電話番号」の処理だ。電話番号の形式にのっとった値が入力されたか判別して処理を分ける。
ここでは「正規表現」を使用する。それには、VBEにある設定をする必要がある。
まずVBEメニューの「ツール」から「参照設定」を選択する。そこで表示された画面の「参照可能なライブラリ ファイル」から「Microsoft VBScript Regular Expression 5.5」を選択して[OK]ボタンをクリックする(図8)。
これで「正規表現」が使用できるようになったので、リスト3のコードを追加する。
〜コード略〜 Dim myRegEx As RegExp ≪1≫ Dim regCheck As Boolean ≪2≫ Set myRegEx = New RegExp ≪3≫ 〜コード略〜 myRegEx.Pattern = "\d{2,4}-\d{2,4}-\d{4}" ≪4≫ regCheck = myRegEx.Test(電話テキストボックス.Value) ≪5≫ If regCheck = False Then MsgBox "電話番号が不正です。" ≪6≫ Exit Sub Else myRecordset("電話番号") = 電話テキストボックス ≪7≫ End If
次は「郵便番号」に郵便番号以外の形式でデータが入力された場合の処理を設定する。
「郵便番号」に形式以外のデータが入力されたときの処理はリスト4だ。同じく「正規表現」を使用する。リスト3とほとんど同じだが、正規表現だけが異なる。
myRegEx.Pattern = " ^[0-9]{3}[\-]?[0-9]{4}$"
上記のコードを追加したVBAコードの全文がリスト5だ。
Option Compare Database Option Explicit Private Sub 登録ボタン_Click() '正規表現を使用可能にするには[ツール]−[参照設定] 'からMicrosoft VBScript Regular Expressions 5.5にチェックを入れる。 '正規表現用変数 Dim myRegEx As RegExp Dim regCheck As Boolean Set myRegEx = New RegExp Dim myRecordset As DAO.Recordset Set myRecordset = CurrentDb.OpenRecordset("select * from 顧客管理テーブル") myRecordset.AddNew myRecordset("氏名") = 氏名テキストボックス myRecordset("性別") = 性別コンボボックス ‘IsNumeric関数で「年齢」が数値かどうかを判別 If IsNumeric(年齢テキストボックス.Value) = False Then MsgBox ("数値を入力してください。") Exit Sub Else myRecordset("年齢") = 年齢テキストボックス End If ‘郵便番号正規表現チェック myRegEx.Pattern = "^[0-9]{3}[\-]?[0-9]{4}$" regCheck = myRegEx.Test(郵便番号テキストボックス.Value) If regCheck = False Then MsgBox "郵便番号が不正です。" Exit Sub Else myRecordset("郵便番号") = 郵便番号テキストボックス End If myRecordset("住所") = 住所テキストボックス '電話番号正規表現チェック myRegEx.Pattern = "\d{2,4}-\d{2,4}-\d{4}" regCheck = myRegEx.Test(電話テキストボックス.Value) If regCheck = False Then MsgBox "電話番号が不正です。" Exit Sub Else myRecordset("電話番号") = 電話テキストボックス End If myRecordset.Update Me.Recalc myRecordset.Close Set myRecordset = Nothing End Sub
Copyright © ITmedia, Inc. All Rights Reserved.