マクロでいこう! ~ Excel活用HomePage ~

VBAでラクしたい ~Part 2~

こちらのコーナーでは、VBAの使い方を中心にご紹介していきます。
作者自身の経験から書いておりますので、本とかとは違ったコトを
書いてるトコロもあるかもしれません。 そういう場合は、良さそうな方を信じましょう(^_^;
TOPVBAでラクしたい ~Part 2~ > 警告メッセージを表示する

警告メッセージを表示する

前回は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関数について、もう少し掘り下げてみようかなと思ってます。



それでは次回までごきげんよぉ~(^^)/~


TOPVBAでラクしたい ~Part 2~
Copyright (C) 2006 マクロでいこう!. All Rights Reserved.