今回はテキストボックスやコンボボックスに入力したデータを登録する時に、空欄がないかチェックするコードを書いていきます。

 

例えばネットで買い物をする時に個人情報を入力しますが、空欄があると「○を入力して下さい」みたいな感じで表示されますよね。

 

あれを再現します。ではいきましょう。

スポンサーリンク

登録時に空欄がないかチェックするコードを書く

vba2-13-1ではまず医薬品新規登録画面の「登録ボタン」ダブルクリックして下さい。

 

vba2-13-2上の画像のようになりましたね。

 

これは「btnRegisterをクリックした時、以下の事を行う」という意味になります。

 

ここに画面に入力されたデータに空欄がないかをチェックするコードを書いていきますが、とても重要なステートメントがありますので解説します。

If~Then…ステートメント

まず薬品名。これは絶対に登録しなければなりません。

 

そこで「薬品名が入力されていないのに、登録ボタンを押してしまった場合の動作」を書いていきましょう。

 

上の画像の赤枠で囲った部分がそのコードです。それでは順番に解説していきます。

 

まず覚えて欲しいのが、下のIf~Then…ステートメントです。

If ~Then…End If

意味は「もし~ならば…する」

 

今回は

If txtDname.Text = “” Then

となっていますね。

 

上記のTextですが、ここではValueとの違いを説明しておきます。

TextValueの違いとは?

valueは文字通り「値」です。入力したデータそのもの。一方textは「変換された文字列」になります。

 

もう少し具体的にみていきますね。

 

vba2-13-4みなさんもたまに使いませんか?Excelでセルの表示形式を「通貨」にしたりとか。

 

その時10000とセルに入力すると「¥10000」と表示されますよね。この時…

・value→10000

・text→¥10000

となります。

 

「””」「空欄」という意味です。ただ場合により2つの意味を持ちます。

 

「txtDnameが空欄である」「txtDnameを空欄にする」です。

 

ここでは「txtDnameが空欄ならば」という意味で使用しています。

スポンサーリンク

メッセージボックス関数とSetFocusメソッド

2行目いきましょう。

MsgBox “薬品名を入力して下さい”, vbExclamation, “確認”

まずは前半の「MsgBox”薬品名を入力して下さい”,」から解説していきます。

 

これは「メッセージボックスに薬品名を入力して下さいと表示する」という意味です。

 

上の画像を見て下さい。これがメッセージボックスです。4種類あります。

 

次に「vbExclamation」。

 

これは上の画像で黄色の三角形に!と表示されている絵(左上)がありますよね。それを意味します。

・vbQuestion→「?マーク」

・vbInformation→「iマーク」

・vbCritical→「×マーク」

になります。

 

ここでは注意喚起なので、一番左上のvbExclamationがちょうどいいんじゃないでしょうか。

 

続いて「”確認”」これは各々のメッセージボックスの画像の左上を見てください。確認と表示されていますね。枠に表示したい文字列をここに入れます。

 

まあこれはぶっちゃけなくてもいいです(笑)。

 

その場合、「,”確認”」「,」もしっかり削除するようにして下さい。エラーが発生します。ちなみになにも入力しない時は「Microsoft Excel」と表示されます。

 

次に3行目。

txtDname.SetFocus

これはtxtDnameをSetFocusする、つまり…「テキストボックスtxtDnameにカーソルを合わせる」という意味です。

 

登録ボタンを押したが、薬品名が入力されていなかった。この時、メッセージボックスのOKボタンを押した後に何をしますか?

 

当然薬品名を入力しますよね?

 

だったらすぐ入力できるようにするために、テキストボックスにカーソルを合わせてあげると使用者は楽ですよね?

 

この心遣いが大切なんですよ。

 

そして4行目。

Exit Sub

これは「処理を抜ける」という意味です。

 

テキストボックスにカーソルを合わせたので、これからはシステム使用者が手動で入力します。そのため処理はここで終わりにする必要があります。

 

5行目。

End If

これはif~then…ステートメントを終える時に(ほぼ)必ず付けます。文字通り「Ifステートメント終了する」という意味です。

 

これで完成です。

一般名、薬効、採用区分、単位はどうする?

さて同様に空欄だとマズイのはテキストボックスの一般名、薬効、コンボボックス採用区分、単位ですね。

 

ただし採用区分と単位は最初から候補を設けています。コンボボックスにワークシートから選択肢を取得しました。これを間違ってBackSpaceで削除されたり、別の言葉を入力されたら困りますよね。

 

それではコンボボックスのプロパティウインドウを見て下さい。

 

vba2-13-6下の方にStyleってありますよね。標準では「0-fmStyleDropDownCombo」になっていますが、それを「2-fmStyleDropDownList」にしてください。

 

こうすることで、コンボボックスの中身の削除、入力ができなくなり、選択肢から選ぶことしかできなくなります。これをcboTaniとcboKubun両方に行います。

 

識別記号についてはないものもありますし、同成分薬、同効薬についても採用がある場合入力しませんので無視してOKです。

 

ではテキストボックス一般名、薬効に同じようにコードを書いていきましょう。上の画像を参考にして下さい。

 

それでは今回はこれで終了です。お疲れ様でした。

 

次回は登録時に「本当にいいんですね?」と確認するコードを書いていきます。

>>Excel VBA講座 目次へ