Outlookサポートナビ!  ≫≫≫ Outlookフォーム作成/VBSプログラミング

 

◆入力チェックを行う(ユーザーの入力ミス・入力漏れを防ぐ)


ユーザーによる入力内容に不備がないか、等の入力チェックは操作の最後に行うことが多いでしょう。

1つのスクリプトで「保存」「送信」「注文」「上書き」などの操作がある場合にもその前に行う入力内容のチェック項目は同じであることが殆どです。それぞれの操作発生時に入力チェックがされるよう、各イベント(Write・Sendなど)やプロシージャ内にスクリプトを記述してもよいのですが、何度も同じ記述をするのは無駄なので、各イベント発生時やコマンド実行時に”入力チェック用のプロシージャ”を呼び出す、という手法を使います。呼び出した入力チェックを通過したら操作は続行、通過できなかったら操作を中止します。

 

 

 

記述例:


記号

入力チェック用 プロシージャ

Function Error_Check()
Error_Check = False

If UserProperties("顧客名") = "" then
MsgBox "顧客名が入力されていません。"
Exit Function  ★チェック中止 = 戻り値Falseのまま
ElseIf UserProperties("顧客住所") = "" then
MsgBox "顧客住所が入力されていません。"
Exit Function  ★チェック中止 = 戻り値Falseのまま
ElseIf UserProperties("Wine") = true and UserProperties("年齢") < 20 then
MsgBox "未成年者にお酒類の販売はできません。"
Exit Function  ★チェック中止 = 戻り値Falseのまま
End If

Error_Check = True  ★チェックを通過したら戻り値Trueに設定
End Function

★入力チェック プロシージャ

★戻り値をFalseに設定

 

★顧客名が未入力なら

★エラーメッセージを表示

★入力チェックは中止&終了

★顧客住所が未入力なら

★エラーメッセージを表示

★入力チェックは中止&終了

★Wine購入かつ 年齢が20歳未満なら

★エラーメッセージを表示

★入力チェックは中止&終了

★上記全てがOKならチェック完了し続行

 

★戻り値をTrueに設定

★入力チェック プロシージャ終了


記号

各イベントやプロシージャから入力チェックを呼び出す

Function Item_Write()
If Error_Check() = False then
Item_Write = False
End If
End Function
----------------------------------------------------
Function Item_Send()
If Error_Check() = False then
Item_Send = False
End if
End Function
----------------------------------------------------
Sub cmdOrder_Click()
If Error_Check() = False Then
Exit sub
Else


Set NewItem = Application.CreateItem(0)
strMsg = ""
strOrder = ""
If UserProperties("Wine") = True then
strOrder = strOrder & "Wine" & ","
End If
If UserProperties("Juice") = True Then
strOrder = strOrder & "Juice" & ","
End If
If UserProperties("Coffee") = True Then
strOrder = strOrder & "Coffee" & ","
End If
If UserProperties("Water") = True Then
strOrder = strOrder & "Water"
End If

strMsg = strMsg & "注文内容" & vbcrlf
strMsg = strMsg & "氏名:" & UserProperties("顧客名") & vbcrlf
strMsg = strMsg & "住所:" & UserProperties("住所") & vbcrlf

strMsg = strMsg & "ご注文内容: " & strOrder

NewItem.body = strMsg
NewItem.Display
End If
End Sub

★保存しようとすると発生するイベント

★入力チェックを呼出し、戻り値がFalseなら

★保存操作は中止

★どうでなければ続行(保存)

 

 

★送信しようとすると発生するイベント

★入力チェックを呼出し、戻り値がFalseなら

★送信操作は中止

★どうでなければ続行(送信)

 

 

★cmdOrder(注文)ボタンをクリックした時

★入力チェックを呼出し、戻り値がFalseなら

★この操作(cmdOrderプロシージャ)は中止

★そうでないなら(入力チェックの戻り値がTrue)

 

★新規メッセージ作成

★変数strMsg初期化

★変数strOrder初期化

★ワインにチェックが入っていたら

★strOrderにWine,を格納

 

★ジュースにチェックが入っていたら

★strOrderにJuice, を格納

 

★コーヒーにチェックが入っていたら

★strOrderにCoffee, を格納

 

★水にチェックが入っていたら

★strOrderにstrOrderと Water, を格納

 

 

★strMsgに”注文内容" と改行を格納

★strMsgに”氏名:" と「顧客名」の値と改行を格納

★strMsgに”住所:”と「住所」の値と改行を格納

★strMsgに”ご注文内容" と strOrderの値を格納

 

★新規メッセージの本文をstrMsgとする

★新規メッセージを表示

 

操作を中止する場合、関数の戻り値をFalseにすれば中止できるもの(Write、Send、Open、Closeイベント等)はFunctionプロシージャで記述し(Functionプロシージャは戻り値を持つ為)、Subプロシージャで記載したコマンド操作についてはExit Subで中止処理を記述します。