VBA,ダブルコーテーション内の""の使い方!
VBAで数式を作成するときに、
数式を「”」ダブルコーテーションで囲いますが、
数式内にも「”」があるとエラーが起こってしまいます。
これを防ぐためには、数式内の「”」を「””」と2個にすることで回避できます。
実例を使って紹介
VBAで数式を記載するとき、一番簡単なやり方は、
①エクセルのセル内に数式を作り、コピーする。
②range("A1").value="数式" として、数式部分にペーストする
という手順ではないでしょうか?
しかし、数式内に「"(ダブルコーテーション)」を使ってあるときには、
エラーとなってしまいます。
例えば、
=IF(A2="男性","〇","×") を上記のやり方で実装すると
↓
RANGE("A1").VALUE="=IF(A2="男性","〇","×")"
となりますが、下記の通りエラーが出てしまいます。
なぜこのような結果になるかというと、
””に囲まれた範囲は文字列とみなされるため、
"=IF(A2=" 男性 "," 〇 "," × ")"
青色 ⇒ 文字列
緑 ⇒ 何かの変数???
と、コンパイラーが認識してしまうからです。
これを回避するためには、数式内の「"」を2回繰り返し「""」とします。
"=IF(A2=" 男性 "," 〇 "," × ")"
↓
"=IF(A2="" 男性 "","" 〇 "","" × "")"
で回避することができます。
応用編
先ほどのことが分かったとして、
下記コードで各セルに何が表示されるかお分かりですか?
Sub ダブルコーテーションの使い方()
S = "TEST"
Range("A1").Value = " " & S & " "
Range("A2").Value = """ & S & """
Range("A3").Value = """" & S & """"
End Sub
解説
1つずつ解説していきます。
分かりやすいように、
文字列として認識させるための「"」を赤色
数式に使用するための「”」を緑色として
区別していきます。
A1
セルA1の数式の「"」に色を付けると下記の通りとなります。
" " & S & " "
文字列として認識させるために「”」が使われており、
その間は「 (空白)」となっていますので、表示結果は「 TEST 」となります。
A2
セルA2の数式の「"」に色を付けると下記の通りとなります。
""" & S & """
この場合、一番左端、右端の「"」は文字列を表すもの。
その中にある「""」は数式に使用するための「"」になります。
結果として、Sも含めてすべてを文字列として認識しますので、「" & S & "」が表示されます。
A3
セルA3の数式の「"」に色を付けると下記の通りとなります。
"""" & S & """"
この場合、""""は文字列を表す「"~"」に囲まれた「""」ですので、左側、右側は「"」
と表示されます。
結果として、「”」 & S & 「"」となりますので、表示は"TEST"となります。
まとめ
非常に複雑ですが、
まずはきちんと数式を作った後に、
「”」⇒「""」に変更していくといいと思います。
コメント欄