プロが教える店舗&オフィスのセキュリティ対策術

メッセージボックスのタイトル設定についてです。
(使用言語はVB5.0です)

例えば、
Ret = msgbox("テスト", ,"title")
と書くと、タイトル部にtitleと表示されます。
戻り値は省略しようと思い、
msgbox("テスト", ,"title")
と書くとエラーが出てしまうのですが、何故でしょうか?

MsgBox "テスト", Title:="title"
と、明示すれば戻り値を省略できますが、上の書き方だと
何故うまくいかないのかちょっと気になっているので、
ご教授ください。

A 回答 (2件)

>と書くとエラーが出てしまうのですが、何故でしょうか?



msgbox() となっているので、関数(戻り値がある=受け皿が必要)と判断されるからです。

表示だけなら、
MsgBox "てすと", , "title"
として下さい。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2006/12/18 19:05

> msgbox("テスト", ,"title")


> と書くとエラーが出てしまうのですが、何故でしょうか?

プロシージャ呼び出しは、
Call プロシージャ名(引数1,引数2,・・・)
か、
プロシージャ名 引数1,引数2,・・・
のどちらかの形式です。
で、
> msgbox("テスト", ,"title")
こう、書くと、「("テスト", ,"title")」全体が、引数1と看做されてしまい、

> Call msgbox( ("テスト", ,"title") )
と、解釈されてしまうからです。

ちなみの引数が1しかないとき、
例えば、
> msgbox("テスト")
はエラーにはなりませんが、実際には、

> Call msgbox( ("テスト") )
こう、解釈されています。
MsgBoxの場合、ByVal型の引数なので問題ないですが、

例えば、
> Sub X(ByRef A)
の様なプロシージャを
> X(A)
と呼び出すと、
> CAll X((A))
と看做され、

変数A自身がサブルーチンに渡されず、ByValの様な動作(プロシージャ内で変数を変更しても、呼び出し元に反映されない)になってしまい、
気づき難いトラブルの原因になりますので、注意が必要です。
    • good
    • 0
この回答へのお礼

大変よくわかりました。
ありがとうございました。

お礼日時:2006/12/18 19:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!