Excel VBA で、今まで問題なく動いていた MsgBox 関数がコンパイル エラーになる。
MsgBox("テスト", vbOKOnly, "テスト")
突然、このようになった。
-------------------------------------
考えられるのは参照設定の中に 「参照不可」 のものがありそう。
-------------------------------------
みたいな回答。
他の回答者は・・・
「MsgBox のカッコが余計」
まぁそうだけど転記ミスだと思ってた。なにしろ「突然動かなくなった」って現象だし。
質問者のコメント
-------------------------------------
引数をカッコでくくった場合は戻り値を受ける形にしないとダメなんて知りませんでした。
今まで打ったものを見返したら、なるほどカッコでくくってませんでした。
-------------------------------------
たしか 「今まで問題なく動いていた」 って言ってたよなぁ。
たしか 「突然、このようになった」 って言ってたよなぁ。
MsgBox("テスト", vbOKOnly, "テスト")
突然、このようになった。
-------------------------------------
考えられるのは参照設定の中に 「参照不可」 のものがありそう。
-------------------------------------
みたいな回答。
他の回答者は・・・
「MsgBox のカッコが余計」
まぁそうだけど転記ミスだと思ってた。なにしろ「突然動かなくなった」って現象だし。
質問者のコメント
-------------------------------------
引数をカッコでくくった場合は戻り値を受ける形にしないとダメなんて知りませんでした。
今まで打ったものを見返したら、なるほどカッコでくくってませんでした。
-------------------------------------
たしか 「今まで問題なく動いていた」 って言ってたよなぁ。
たしか 「突然、このようになった」 って言ってたよなぁ。
コメント
コメント一覧 (2)
戻り値をとるときは引数を括弧でくくる。
戻り値を足らないときは括弧は使わない。
こんなこと書くと、理屈っぽいって言われそうだけど・・・
関数の構文ぐらいは統一しようよ。
括弧というのは、
・関数名と引数を区切るもの
・あるいは演算のプライオリティを高めるもの
だけに限っておこうよ。
昔のいわゆるBASICではVBみたいな違いは無かったし。
括弧でくくられていない関数呼び出しの行って、すごく読みずらいし。
だから、私は戻り値をとらなくとも、無理やり
a = 関数()
と記述しますね。
ところが Function は必ずしも値を返す作りにしなけりゃならないわけじゃない。
てな事で、オイラの場合は Call を使います。
Call を付ければ、その後ろに続くプロシージャ名に ( ) を付けられます。
Call プロシージャ名(hoge)
Call プロシージャ名()
んでさっき気づいたんだけど、
Call MsgBox("hoge")
ってできるらしいw