画面にメッセージを表示するには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