今回は医薬品新規登録画面において、医薬品のデータを入力後、登録ボタンを押してデータを保存する前の最終確認について。

 

具体的には「システム使用者が入力を間違っていないか、本当に登録していいのかを最終確認するコード」を書いていきます。

MsgBox関数と複数の変数をまとめて宣言する方法

vba2-14-1上の画像がそのコードになります。「うわっ」と思った方もいらっしゃるかもしれませんね。

 

でもぱっと見すごく面倒臭そうな感じがしますが、実はとってもシンプルです。

 

Dim Msg As String, title As String, res As Integer

Msg = “医薬品データを登録します。よろしいですか?”
title = “医薬品新規登録の確認”

res = MsgBox(Msg, vbYesNo + vbQuestion + vbDefaultButton2, title)
If res = vbNo Then Exit Sub

では1つずつ解説していきましょう。

Dim Msg As String, title As String,res As Integer

「変数Msgを文字列と宣言する、変数titleを文字列と宣言する、変数resを整数と宣言する」になります。

 

これは3つの変数の宣言を1行でまとめています。通常変数の宣言を複数回行うには…

Dim Msg As String
Dim title As String
Dim res As Integer

となります。しかし先のように書くと2行減らす事ができます。

 

書き方としては、まず1つ目の変数を宣言した後、「,変数 As データ型」とすればOKです。3つ目以降も同様に行います。

 

続いて…

Msg = “医薬品データを登録します。よろしいですか?”
title = “医薬品新規登録の確認”

メッセージボックスで表示する文章を変数にそれぞれ入れました。そのためにMsgとtitleはStringで宣言したのです。

 

VBA講座2-13では「特別変数に入れなかったはずでは?」と思われた方もいらっしゃるかもしれません。

 

今回はコードがちょっと長くなるので、その中でさらに長ったらしい文章が入っていると見た目も悪いんですよ。

 

だから変数に入れてシンプルにしてしまおうくらいに思っていただければと思います。

MsgBox関数 アイコン、ボタン、標準ボタン

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

これはVBA講座2-13でやりましたね。「メッセージボックスに薬品名を入力して下さい、と表示する(枠に確認と表示する)」でした。

 

そしてこちらをご覧ください。

res = MsgBox(Msg, vbYesNo + vbQuestion + vbDefaultButton2, title)

先ほどの登録ボタンの空欄(入力漏れ)確認の応用になります。まず=の左側からいきましょう。

 

res=

これは「変数resは」ですね。変数resに=の右側を入れるという意味です。

 

=の右側をみていきます。

MsgBox(~)

「~をメッセージボックスに表示する」となります。

 

この前は()は付けませんでしたが、=の右側に書く時は()を付けると思って頂ければOKです。

 

続いて()内を解説していきます。

 

変数Msg

これは「 “医薬品データを登録します。よろしいですか?”」ですね。

 

vbYesNo

「はい、いいえボタンを表示する」という意味になります。

 

vbQuestion

「?マークを表示する」という意味ですね。VBA講座2-13でやりました。

 

vbDefaultButton2

「初期に選択されているボタンをボタン2にする」という意味になります。

 

ここでは「はい」がボタン1、「いいえ」がボタン2となります。だから変数resはIntegerで宣言したのです。

 

なぜ初期のボタン設定を2にしたのかわかりますね?

 

登録ボタンを押した後、「間違ってEnterキーを押したりしても、戻る事ができるようにするため」です。

 

もしボタンの初期値が1になっていると、間違って登録してしまった時に取り返しがつかないことになりますからね。

 

さて、以上を+でつなぐ事ができます。

 

title

メッセージボックスの枠に表示する文字列になります。今回は変数titleに入っている “医薬品新規登録の確認”が表示されます。

 

次が今回の講座で一番大切であり、使用頻度が高いコードです。

If res <> vbYes Then Exit Sub

If構文で「End If」を使わないケース。そして<>「~でない」。ノットイコール「≠」です。

 

「もし変数resがYesでないならば、処理を抜ける」という意味です。つまりこの場合「Yesでない=Noである」となります。

 

という事は以下のように書いてもOK。

If res = vbNo Then Exit Sub

今回はボタンが「はい」と「いいえ」の2つだけなので、どちらで書いてもOKです。

 

ただ候補が3つとかの場合は<>を使うと便利な場合もありますので場合により使い分けます。ぜひ覚えておいて下さいね。

 

それでは今回は以上となります。お疲れ様でした。

 

次回はユーザーフォームに入力したデータをワークシートに転記するコードを書いていきます。