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

VBAでラクしたい ~Part 2~

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

Msgbox関数をよく知る

前回は警告メッセージの表示についてやりましたけど、そこで使った"Msgbox関数"というのがあり
ますね。

私も普段は Msgbox("表示したいメッセージ") みたいなシンプルな使い方(ある意味手抜きとも言
う・・)しかしていないんですけど、いい機会ですので機能についてもう少し詳しく見ていくこと
にいたしましょうヽ(^-^ )


まずこの Msgbox っていうのは関数ですので、"値を返します"。
例えばOKや中止などのボタンを表示させた際に、ユーザーがどのボタンを押したか、というよう
な情報を取得することができます。

また、この関数は Msgbox("表示したいメッセージ") みたいに、最低限の設定値があれば使えます
が、実は"5個所"も設定できるポイントがあるのです。

※一応、他の4つは"省略可能"という扱いになっているため、エラーにならないんですね。

で、その形式ですが


MsgBox(prompt,buttons,title,helpfile,context)


というようになってます。

この5つのうち helpfile と context については、重要度はやや低めかなと思いますので、説明
は割愛させていただきます(^^;)
どんな内容かって言いますと、"そのメッセージを出した状況に対応するヘルプを出す"っていうこ
となんですね。ですが、ヘルプとかになりますとVBAとはまたちょっと内容的に外れてしまいま
すので、この辺は興味のある方がいらっしゃいましたら、お調べいただければと思います<(_ _)>


てなわけで、左から順に見ていくとしましょう。

まず prompt ですが、上の例でいくと "表示したいメッセージ" の部分のことです。

ダイアログボックス内に表示させるメッセージを指定しますので、この部分の指定は必須です。
半角で1024文字ですから結構長いメッセージを表示できますが、できるだけメッセージは
"簡潔に分かりやすく"を心がけましょう(^^;)

もし長くなるようであれば、改行を入れて複数行で表示することもできます。
そのためには改行コードである Chr(13) を & でつないで使います。

例えば

MsgBox("こんなに長いメッセージであればこの辺で改行して" _
       & Chr(13) & "おいたほうが見やすいでせう")

というような感じです。お試し下さいまし。


次の buttons ですが、ここには"表示されるボタンやアイコンの種類等を表す値の合計値を示す数
式"を指定します。

数式?と言われても何かピンとこないですよね。私もそうですσ(^_^;)

Helpを開いていただければ詳しい説明が載っていますけど、ここには「このボタン」とか「このア
イコン」という指定をするための"定数"を組み合わせて書いたりするのです。

例えばこれもHelpを見ながら確認していただきたいのですが、"警告"アイコンを表示させつつ"OK"
ボタンだけを表示させたい、というような場合には

VbOKOnly + vbCritical

というような書き方をします。
こうしてみると「あぁなるほど数式っぽい気がするな~」と思うわけです(^_^;)

実はこれら vbOKOnly や vbCritical っていうのは、いわゆる"定数"ですから値を持っています。
vbOKOnly は 0 、vbCritical は 16。
ですから VbOKOnly + vbCritical と書く代わりに 16 と書いてもいいわけです
# 0 + 16 = 16 ですから・・。

でもこんな数字を書いたところで、パッと見わかんないですよね(⌒_⌒;)

そのために、こういう分かりやすい定数を組み合わせて使うのが一般的なわけです。


そして3つ目の title ですけど、これはもうそのまんま"タイトル"です。
ダイアログボックスのタイトルバーに表示したい文字列をここで指定します。


というようなことでした。お分かりいただけましたでしょうか?ヽ(^-^ )

これを踏まえまして、最初に書いた 

MsgBox ("氏名を入力して下さい")

をもう少しそれっぽく(ってどんなだ?(^_^;) 直してみると


MsgBox("氏名を入力して下さい", vbCritical, "入力エラー")


となります。

しかしですね、buttons や title などを指定した時点で、このままでは使えなくなっているんで
すよ。 #MsgBox関数

どういうことかといいますと、Msgbox は "関数"ですから「値を返します」。
で、その返ってくる値を"受け止めてあげなければならない"のです。

その値を受け止めてあげるために、変数を1つ用意しておきましょう。ちなみに私は

Dim RetVal As Integer

をよく使います。RetVal っていうのは Return Value の意味で使ってます(^^ )

こうしておいて

RetVal = MsgBox("氏名を入力して下さい", vbCritical, "入力エラー")

としてやればいいことになります。

ちなみにこの RetVal には押されたボタンを示す数値が入ってきます。
OKだったら 1、キャンセルだったら 2 とか(他Help参照の事)

ですので、何が押されたかによって処理を分けるには、このMsgBox関数が返す値を見れば良いこと
になりまする。


ざーーーっと説明してきましたけど、いかがでしたでしょうか?
Helpを見ながら色々な組み合わせを試してみたり、残り2つ(EMailと誕生日)のエラーメッセージ
を修正したりしてみて下さいまし d(^-^ )


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


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