“”、”””、””””、”””””、使い分けがよく分からない?

VBAで文字列を設定する場合、ダブルクォーテーションで文字列部分を表現します。

繰り返しになりますが、この例のabcのように文字列として扱うときはダブルクォーテーションで囲って文字列とします。

この文字列の表現の中で、ダブルクォーテーションが3つや4つ連続している表現を見ることがあります。

これらの書き方が分からずに、&マークを付けて連結してみたり、”””を””””にしてみたり、など試行錯誤しながら文字列を作成している場合は、たった1つのコツを覚えるだけで混乱しなくなります。


ダブルクォーテーションの書き分け

ダブルクォーテーションの書き分けは以下のようになります。

左側の”1文字 例:”abc文字列表現の開始
右側の”1文字 例:abc”文字列表現の終了
“”のみ 空文字列を表す
文字列内の”” 文字列内にダブルクォーテーション1文字があることを表す
“”” ダブルクォーテーション1文字で始まる文字列の開始
“””” ダブルクォーテーション1文字の文字列

問題なのは””の扱いです。

“”は2文字だけであれば空文字列ですが、文字列内にある場合はダブルクォーテーション1文字になります。

“を文字列に含める場合は、””と書いて、「この”は文字列の先頭と開始のダブルクォーテーションじゃなくて、文字列内の1文字の”です」という意味で、”を左側に添えて(1つ加えて)エスケープすることで、文字列内の”1文字として表現します。

もう一度書きます。

“”だけであれば空文字列。

文字列内の””であれば”1文字。

これさえ覚えれば、”””や””””の意味も分かります。


“””は文字列として完結していない

先の表にも書いていますが、”””は文字列の終端に達していない状態です。

このように書いてあれば、右の”が無い、と分かります。

“””はそれと同じ状態です。

前述の通り、文字列内の””は”1文字を表すため、”””は、「”1文字を書いて、文字列の終わりの”をまだ書いていない」という状態になります。

そのため、”””に続いて文字列を書いて右端に”を書くことで、文字列とみなされます。



“”””は、”1文字の文字列

前述で、文字列内の””は”1文字を表すと説明しましたが、””””も同じ考え方で説明できます。

一番左の”は文字列の開始を表します。

左から2番目の”は、左から3番目の”をエスケープするためのダブルクォーテーションです。

左から3番目の”は、文字列内の文字としてダブルクォーテーションを表します。

一番右の”は、文字列の終了を表します。

こういう書き方をすると分かりやすいかもしれません。



“””と&

こんな書き方をして、想定外な状態になったことがあるでしょうか。

これを見て、文字列[” & “]だ、とわかるのであればもう問題ありません。

しかし、文字列[“”]、と思ったのであれば、もう1つ覚えておきましょう。

“””と書くと、続く文字も文字列に含まれる

想定外な文字列を作ってしまう原因は「文字列内の””は”1文字」ということへの理解がまだ希薄なことが原因です。


まとめ

覚えることは1つだけです。

「””が文字列内にある場合は”1文字」

これが分かれば、”””も””””も”””””も””””””も、全部理屈が分かるようになります。