今回は登録ボタンを押してデータを保存する前に、「システム使用者が間違っていないか、本当に登録していいのかを最終確認するコード」を書いていきます。

スポンサーリンク

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

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

 

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

 

では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で宣言したのです。

 

前回の講座で「登録ボタンを押した時に空欄がある場合は、特別変数に入れなかったはず」と思われた方もいらっしゃるかもしれません。

 

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

 

だから変数に入れてシンプルにしてしまおうくらいに思って下さい。

スポンサーリンク

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

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

これは先ほどの登録ボタンの空欄確認の応用ですね。まず=の左側からいきましょう。

 

res=

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

 

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

MsgBox(~)

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

 

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

 

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

 

変数Msg

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

 

vbYesNo

「はい、いいえボタンを表示する」という意味です。

 

vbQuestion

「?マークを表示する」という意味ですね。一つ前の講座でやりました。

 

vbDefaultButton2

初期に選択されているボタンをボタン2にするという意味です。ここでは「はい」がボタン1、「いいえ」がボタン2となります。だから変数resはIntegerで宣言したのです。

 

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

 

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

 

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

 

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つとかの場合は<>を使うと便利な場合もあります。ぜひ覚えておいて下さい。

 

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

 

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

>>Excel VBA講座 目次へ