Home » ExcelVBA Rangeオブジェクト » セル数式 » VBAでダブルクォーテーションを入力するには

VBAでダブルクォーテーションを入力するには

対象:Excel2003, Excel2007, Excel2010

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で指定する場合どうすればいいのでしょうか」
といったご質問をいただくことも多いのでついでに。

▼VBAで数式を入力する
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 » ExcelVBA Rangeオブジェクト » セル数式 » VBAでダブルクォーテーションを入力するには

「セル数式」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.