病院で処方された薬や病気についてわかりやすく解説します

VBA講座2-13  データ登録時に空欄がないかチェックする

ノートパソコンとハーブ

今回はテキストボックスやコンボボックスに入力したデータを登録する時に、空欄がないかチェックするコードを書いていきます。例えばネットで買い物をする時に個人情報を入力しますが、空欄があると「○を入力して下さい」みたいな感じで表示されますよね。あれを再現します。ではいきましょう。

スポンサーリンク

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

 

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

 

vba2-13-2上の画像のようになりましたね。これは「btnRegisterをクリックした時、以下の事を行う」という意味になります。

 

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

If~Then…ステートメント

 

まず薬品名。これは絶対に登録しなければなりません。それでは薬品名が入力されていないのに登録ボタンを押してしまった場合の動作を書いていきましょう。

 

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

 

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

If ~Then…End If

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

 

今回は

If txtDname.Text = “” Then

となっています。

 

まず「txtDname.Text=””」です。Textですが、ここではvalueとの違いを説明しておきます。valueは文字通り値です。入力したデータそのもの。textは変換された文字列になります。もう少し具体的にいきましょう。

 

vba2-13-4みなさんもたまに使いませんか?Excelでセルの表示形式を通貨にしたりとか。その時10000とセルに入力すると¥10000と表示されますよね。この時valueが10000、textは¥10000となります。

 

「””」は空欄という意味です。場合により2つの意味を持ちます。「txtDnameが空欄である」と「txtDnameを空欄にする」です。

 

ここでは空欄であるという意味になります。なので「txtDnameが空欄ならば」となります。

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

 

vba2-13-52行目いきましょう。

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です。

 

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

 

それでは今回はこれで終了です。お疲れ様でした。次回は登録時に「本当にいいんですね?」と確認するコードを書いていきます。
次の講座

スポンサーリンク

こちらの記事もおすすめです

関連記事

管理人も使用!パソコン作業が捗ります!

サイト内検索