VBA(Visual Basic for Applications)でマクロなどを作成しはじめた頃に、ぶつかる壁がいくつかあります。
その一つがダブルクォート・ダブルクォーテーションの入力です。
VBAでは、文字列をダブルクォートで括るのが大原則の一つとしてあるため、ダブルクォートそのものを文字列として扱うにはどうすればいいのか戸惑うわけです。
結論から言うと、ダブルクォートそのものを文字列として扱うためには、「""」とダブルクォートを2つ並べます。
VBAのコードの中でダブルクォートを「""」と2個並べておくと、実際には文字列としてのダブルクォート「"」1個が入力されることになります。
いくつかサンプルをご紹介しておきます。
ダブルクォーテーションを含む数式を入力するサンプルマクロ
以下のマクロを実行するとA1セルに
「=IF(B1>=80,"合格","不合格")」
という数式が入力されます。
Sub ダブルクォートのサンプル1
Range("A1").Formula = "=IF(B1>=80,""合格"",""不合格"")"
End Sub
VBAの中のコードで「""」とダブルクォート2個jが、セルに入力された数式では「"」とダブルクォート1個になるので、
「""合格"",""不合格""」が「"合格","不合格"」となります。
セルに文字列としてのダブルクォーテーションを入力するサンプルマクロ
数式ではなくセルにダブルクォートを入力する場合も考え方は同じです。
Sub ダブルクォートのサンプル2
Range("A1").Value = "ダブルクォート""をセルに入力します。"
End Sub
上記のマクロを実行すると
「ダブルクォート"をセルに入力します。」
という文字列がA1セルに入力されます。
ダブルクォーテーションで括られた文字列を入力するサンプルマクロ
ですから、ダブルクォートで括られた文字列をセルに入力する場合は以下のようなコードになります。
Sub ダブルクォートのサンプル3
Range("A1").Value = """ダブルクォートで文字列が括られます。"""
End Sub
結果的にダブルクォートが3つ並ぶことになるので、見慣れないとどれが何のダブルクォートなのか戸惑うかもしれませんが、
「"""ダブルクォートで文字列が括られます。"""」
の一番外側のダブルクォート
「"""ダブルクォートで文字列が括られます。"""」
が、VBAで文字列を指定するときに文字列を括るダブルクォートで、その中のダブルクォート2個
「"""ダブルクォートで文字列が括られます。"""」
が、セルの中に値として入力されるダブルクォートです。
変数に入力された文字列をダブルクォーテーションで括った数式を入力するサンプルマクロ
最初の数式の例で、変数と文字列結合演算子「&」を使って文字列を入れるようにする場合、以下のようなコードになります。
Sub ダブルクォートのサンプル4
Dim s1 As String
Dim s2 As String
s1 = "合格"
s2 = "不合格"
Range("A1").Formula = _
"=IF(B1>=80,""" & s1 & """,""" & s2 & """)"
End Sub
上記のマクロを実行するとA1セルに
=IF(B1>=80,"合格","不合格")
という数式が入力されます。
「Range("A1").Formula = 」
につづく
「"=IF(B1>=80,""" & s1 & """,""" & s2 & """)"」
のうち、
「"=IF(B1>=80,""" & s1 & """,""" & s2 & """)"」
が、VBAのコード内で文字列を括るためのダブルクォートで、
「"=IF(B1>=80,""" & s1 & """,""" & s2 & """)"」
がセルに入力される数式で使われるダブルクォートです。
IF関数の第1引数にCellsプロパティを使うサンプルマクロ
ちなみに、この例までお話しすると、
「IF関数の第1引数のB1をCellsで指定する場合どうすればいいのでしょうか」
といったご質問をいただくことも多いのでついでに。
Sub 数式を入力するサンプル
Dim s1 As String
Dim s2 As String
s1 = "合格"
s2 = "不合格"
Range("A1").Formula = _
"=IF(" & Cells(1, 2).Address(False, False) & ">=80,""" & s1 & """,""" & s2 & """)"
End Sub
というコードでCellsプロパティを使ってVBAから
「=IF(B1>=80,"合格","不合格")」
という数式を入力することができます。
Home » Excel VBA Rangeオブジェクト » セル数式 » VBAでダブルクォーテーションを入力するには