LoginSignup
maiiT
@maiiT

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

VBAのMsgBoxについて

Q&AClosed

解決したいこと

初学者です。本にあるコード書いている最中に(まだ実行する前に)コンパイルエラーとなりました。
「&」の前後にスペースを入れるとエラーは解除されたのですが、特に「スペースを入れること」とは書いていなかったので、本にはスペースがあったのですが、試しにスペースを入れずにやってみました。
ネットで検索すると、「お作法」的なものと書いてあるだけで、構文エラーとは書いていないように感じたのですが、スペースは入れないといけないのでしょうか?
そういったことはどこかを見るとわかるのでしょうか?

発生している問題・エラー

コンパイルエラー:
修正候補:ステートメントの最後

該当するソースコード

MsgBox "合計は"&Total&"円です"

自分で試したこと

スペースを入れたらエラーは解消しました。
ちなみに「Total」変数は前文で定義済みです。

0

2Answer

Comments

  1. @maiiT

    Questioner

    回答ありがとうございます。
    とてもわかりやすい記事で、初学者の自分でもなんとなく理解できました。たしかに言われてみれば、本でも「&」がほかの構文などに出てきていたので、うまく言えませんが…そういうことなんですね。
    自分ではこのようにほしい回答が記載されている記事は見つけられなかったので助かりました。
    ありがとうございました。

自分は、Visual Basic for Application のバグだと思っています。
以下のコードをIDEに1行づつ入力してEnterしてみてください。

sub hoge()
    dim i as long
    dim str as string

'↓ここから(1行づつ入力してEnterしてみてください)

    i=0

    'enterを押すと、
    i = 0
    'のように、スペースが補完されます

    str="A"

    'enterを押すと、
    str = "A"
    'のように、スペースが補完されます

    str="A"&"B"

    'enterを押すと、
    str = "A" & "B"
    'のように、スペースが補完されます

    str="A"&str

    'enterを押すと、
    str = "A" & str
    'のように、スペースが補完されます

    str="A"&str&"B"

    'enterを押すと、
    '"B" がコンパイルエラーになります ⭐️⭐️⭐️

    'ところが、
    str="A"&str &"B"

    'enterを押すと、
    str = "A" & str & "B"
    'のように、スペースが補完されます

end sub

↑この挙動から分かるように、変数名の直後の&だけ、スペースの補完が正しく機能しません。
よって、現状では、変数名の直後にスペースをタイプするしかないと思います。(安全のため、&の前後にスペースをタイプする)

「お作法」的なものと書いてあるだけで、構文エラーとは書いていないように感じたのですが、スペースは入れないといけないのでしょうか?

スペースを入れないとコンパイルエラーのまま先に進めないので、結果的に「スペースは入れるもの」と考えるしかないということでしょう。

0

Comments

  1. 上の回答は VB.NET の話ですか? 質問は VBA の話のようですが・・・

  2. @maiiT

    Questioner

    回答ありがとうございます。こちらはVBAの質問のつもりで投稿したのですが、わかりづらかったかもしれません。申し訳ありませんでした。
    でも同じVBの流派(?)の「VB.NET」にも興味がわきました。ありがとうございました。

Your answer might help someone💌