「"」(ダブルクォーテーション)のエスケープ
「"」(ダブルクォーテーション)のエスケープ
恥ずかしい告白
まことに今さらながら、実は、
「"」(ダブルクォーテーション)のエスケープについて、ちゃんと理解していなかった
のである!
では、どうしていたのかというと、
そのときどきでテキトーに書いて、望む実行結果が得られるまで試行錯誤
という、
実に恥ずかしいやり方
をしていたのである!
勉強した
そこで、有名な Office TANAKA さんのサイトで勉強した。
むかーし、それこそVBAに手を染め始めた頃にも見たような気がするが、改めて見るとすっげー分かりやすく説明されていた。
曰く、
まず大原則として文字列はダブルコーテーション(")で囲む必要があります。つまり、文字列の両端は必ずダブルコーテーション(")でなければならないのです。この両端の「"」は、実際には表示されず、内側にあるのが文字列だということを示す特別な記号です。
次に、ダブルコーテーション(")を単なるの記号(文字列)として使いたいときは、
(……中略……)
「""」と2つ続けて書きます。文字列の内部でダブルコーテーション(")が2つ続いた場合には、特別な記号ではなく、「"」を単なる記号として認識してくれるのです。いわば、最初の「"」は、後の「"」に対するエスケープ文字的な働きをします。
なんと、こんなに簡単なことだったのだ!!!!!!!!
自分なりに整理すると、「"」を単なる文字列としてVBAに認識させたいときは、
- まず全体を「""」で括り、
- 文字として扱いたい「"」が出てくるごとに「"(エスケープ)"(ダブルクォーテーション)」と心の中で唱えながら入力する
※カッコ内は心の中の声
という手順でやれば良いわけだ。
たとえば、「"ち~んw"」とダブルクォーテーション付きで認識させたい場合は、
こんな風に入力することになる。
心の中で
- まず両サイドを「""」で括り(赤で表示した「"」)、
- エスケープ用の「"」(緑)と表示用の「"」(黄)を入力して、
- 「ち~んw」と入力して、
- エスケープ用の「"」と表示用の「"」を入力する、っと……。
このように唱えながら作業する癖をつけたら良いわけだ。
前回
でやったみたいに、
<td colspan=""></td>
とか、
<td rowspan="1"></td>
みたいな文字列を作りたいときは、
こんなふうにしたら良い。
練習
次のコードでやってみる。
リスト1 標準モジュール
Public Sub escapeTest() Debug.Print """ち~んw""" Debug.Print "<td colspan=""""></td>" Debug.Print "<td rowspan=""1""></td>" End Sub
これを実行すると、
ほれ、うまくいった。
おわりに
やっぱり、基本は大切です。