こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

メッセージボックスのタイトル設定

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

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

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

投稿日時 - 2006-12-15 12:07:35

QNo.2602903

困ってます

質問者が選んだベストアンサー

> 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の様な動作(プロシージャ内で変数を変更しても、呼び出し元に反映されない)になってしまい、
気づき難いトラブルの原因になりますので、注意が必要です。

投稿日時 - 2006-12-15 12:51:34

お礼

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

投稿日時 - 2006-12-18 19:05:08

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(2)

ANo.1

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

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

表示だけなら、
MsgBox "てすと", , "title"
として下さい。

投稿日時 - 2006-12-15 12:15:03

お礼

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

投稿日時 - 2006-12-18 19:05:25

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-