Microsoft の公式文書ではないですが、以下の記事が見つかります。内容は信頼できると思います。
文字列結合&でコンパイルエラーになる理由
https://excel-ubara.com/excelvba4/EXCEL_VBA_410.html
初学者です。本にあるコード書いている最中に(まだ実行する前に)コンパイルエラーとなりました。
「&」の前後にスペースを入れるとエラーは解除されたのですが、特に「スペースを入れること」とは書いていなかったので、本にはスペースがあったのですが、試しにスペースを入れずにやってみました。
ネットで検索すると、「お作法」的なものと書いてあるだけで、構文エラーとは書いていないように感じたのですが、スペースは入れないといけないのでしょうか?
そういったことはどこかを見るとわかるのでしょうか?
コンパイルエラー:
修正候補:ステートメントの最後
MsgBox "合計は"&Total&"円です"
スペースを入れたらエラーは解消しました。
ちなみに「Total」変数は前文で定義済みです。
Microsoft の公式文書ではないですが、以下の記事が見つかります。内容は信頼できると思います。
文字列結合&でコンパイルエラーになる理由
https://excel-ubara.com/excelvba4/EXCEL_VBA_410.html
@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
↑この挙動から分かるように、変数名
の直後の&
だけ、スペースの補完が正しく機能しません。
よって、現状では、変数名
の直後にスペースをタイプするしかないと思います。(安全のため、&
の前後にスペースをタイプする)
「お作法」的なものと書いてあるだけで、構文エラーとは書いていないように感じたのですが、スペースは入れないといけないのでしょうか?
スペースを入れないとコンパイルエラーのまま先に進めないので、結果的に「スペースは入れるもの」と考えるしかないということでしょう。
上の回答は VB.NET の話ですか? 質問は VBA の話のようですが・・・
@maiiT
Questioner回答ありがとうございます。こちらはVBAの質問のつもりで投稿したのですが、わかりづらかったかもしれません。申し訳ありませんでした。
でも同じVBの流派(?)の「VB.NET」にも興味がわきました。ありがとうございました。