ダブルコーテーションの表示


画面にメッセージを表示するにはMsgBoxを使います。次のコードは「tanaka」という文字列を表示します。

Sub Sample()
    MsgBox "tanaka"
End Sub

このように、VBAでは文字列をダブルコーテーション(")で囲むのが基本ルールです。「MsgBox tanaka」では、tanakaという変数名を指定したことになってしまいます。特別な記号であるダブルコーテーション(")ですが、ではダブルコーテーション(")自体を文字列として表示するにはどうしたらいいでしょう。

たとえば、次のようにするとダブルコーテーション(")を表示できます。

Sub Sample()
    MsgBox """tanaka"""
End Sub

あるいは、次のように書いても同じ結果になります。

Sub Sample()
    MsgBox """" & "tanaka" & """"
End Sub

ダブルコーテーション(")自体を文字列として扱う場合、このように「"」を3つ重ねたり4つ続けたりします。これは、どういう意味なのでしょう。

まず大原則として文字列はダブルコーテーション(")で囲む必要があります。つまり、文字列の両端は必ずダブルコーテーション(")でなければならないのです。この両端の「"」は、実際には表示されず、内側にあるのが文字列だということを示す特別な記号です。

次に、ダブルコーテーション(")を単なるの記号(文字列)として使いたいときは、ただ普通に「"」とだけ書いてはいけません。1つの「"」だけでは、それが単なる記号なのか、文字列の両端を表す特別な記号なのかが区別できないからです。そこで、ダブルコーテーション(")を単なる記号として扱いたいときは「""」と2つ続けて書きます。文字列の内部でダブルコーテーション(")が2つ続いた場合には、特別な記号ではなく、「"」を単なる記号として認識してくれるのです。いわば、最初の「"」は、後の「"」に対するエスケープ文字的な働きをします。

以上のルールを正しく理解すれば、次のケースもわかりますよね。

たとえば次のように表示したいときは、

Sub Sample()
    MsgBox "<html lang=""ja""><head>"
End Sub

となります。

これは、ワークシート上の数式でも同じように考えられます。

「あ~ゴチャゴチャして面倒くさい!」という短気なアナタに朗報です。もっとわかりやすくダブルコーテーション(")を文字列として表示したいのなら、いっそChr関数を使う手もあります。「"」の文字コードは34です。

Sub Sample()
    MsgBox Chr(34) & "tanaka" & Chr(34)
End Sub