警告メッセージを表示する
前回はTrim関数を使いまして、テキストボックスに何も入力されていない状態を検出する方法につ
いてご紹介致しました。
あのような感じで3つのテキストボックスをチェックするとしますと
Private Sub CmdAddNew_Click()
'*** 何も入力されていなければ、警告メッセージを表示 ***
If Trim(TxtName.Text) = "" Then
MsgBox ("こら")
End If
If Trim(TxtEmail.Text) = "" Then
MsgBox ("こら")
End If
If Trim(TxtBirthday.Text) = "" Then
MsgBox ("こら")
End If
'*** 自動採番処理 ***
Cells(LngRecRow, cRecNumCol).Value = LngCurRecNumDsp
・・・・・・(以下 略)
End Sub
とかすればいいとお考えになるかもしれませんが、これではタイヘン(^-^;
3個所何も入力されてないと、3回も警告が表示されてしまいます(( ((( ヽ(;^^)ノ
しかも、「OK」をクリックすればその後の処理に進んでしまうので、警告を出す意味がありませ
ん。
ということで、何かエラーが起きてそれに対処する場合忘れてならないのは、
(1)メッセージを表示(内容を的確に)
だけではなく
(2)その処理を抜ける(中断する)
ことが挙げられます。更にユーザーに対する配慮を考えると
(3)エラー発生個所に誘導する(対処しやすいようにする)
例えば入力エラーであれば、間違っている場所にカーソルを合わせてやるとか、あくまでケースバ
イケースですが、そこまで考えられるようにすると、より良いシステムが構築できるでしょう。
さてさてこれらを踏まえまして、3つのテキストボックスのエラーチェック処理を再び考えてみま
しょうヽ(^-^ )
まずは(1)。これはとりあえずそのままにしておきましょう。
あとで詳しく見ていきます。
次に(2)。メッセージを表示した後に、処理を抜けなければなりません。
そのためには Exit Sub を使います。
意味はそのまんまですね。実行中の Sub 処理から Exit する(抜ける)ということですから。
ですので
If Trim(TxtName.Text) = "" Then
MsgBox ("こら")
Exit Sub
End If
とすればいいわけです。
でもこのままですと、どこでエラーになっているのかがわかりませんよね(^^;)
ですので、とりあえずメッセージの内容は違うものにしておきましょうか。
'*** 何も入力されていなければ、警告メッセージを表示 ***
If Trim(TxtName.Text) = "" Then
MsgBox ("氏名を入力して下さい")
Exit Sub
End If
If Trim(TxtEmail.Text) = "" Then
MsgBox ("E-Mailアドレスを入力して下さい")
Exit Sub
End If
If Trim(TxtBirthday.Text) = "" Then
MsgBox ("誕生日を入力して下さい")
Exit Sub
End If
こうしておけば、どこでエラーになったのかが一目瞭然ですよね d(^-^ )
で、最後の(3)ですけれども、先に述べた通り"エラー個所にカーソルを合わせてやる"という方法を
見てみましょう。
その前に"カーソルを合わせる"ってどういうことでしょう?
フォームが開いている状態で Tab キーを何回かクリックしてみて下さい。そうしますと、テキスト
ボックスの場合は中でカーソルが点滅し、ボタンなどの場合は細い点線で囲まれたような状態に見
えますよね。
このような状態を「フォーカスがセットされている」といいます。
フォーカスっていうのはいわゆる「照準」です。照準を合わせるっていうことです。
例えば「氏名」テキストボックスににフォーカスを合わせる(セットする)には、このように書き
ます。
TxtName.SetFocus
コントロール名.SetFocus という形ですねヽ(^-^ )
これを全てに割り当てると
'*** 何も入力されていなければ、警告メッセージを表示 ***
If Trim(TxtName.Text) = "" Then
MsgBox ("氏名を入力して下さい")
TxtName.SetFocus
Exit Sub
End If
If Trim(TxtEmail.Text) = "" Then
MsgBox ("E-Mailアドレスを入力して下さい")
TxtEmail.SetFocus
Exit Sub
End If
If Trim(TxtBirthday.Text) = "" Then
MsgBox ("誕生日を入力して下さい")
TxtBirthday.SetFocus
Exit Sub
End If
どうですか? ちゃんと入力すべき場所にフォーカスがセットされたでしょうか(^-^ )
こういうふうにすると、だいぶ親切ですよね。
で、次回はMsgbox関数について、もう少し掘り下げてみようかなと思ってます。
それでは次回までごきげんよぉ~(^^)/~
|
|
TOP > VBAでラクしたい ~Part 2~
|
|