次の方法で共有


「"」をVBAで出力したい

質問

2020年12月27日日曜日 10:02

たとえば

 ”This is a pen."

とテキストを、ここの入力欄にVBAで自動出力(ペーストというべきでしょうか)したいとき、どう設定すべきでしょう? 「"」をVBA内で使うと、テキストの一部ではなく区切りと認識されてしまうのです。

すべての返信 (4)

2020年12月27日日曜日 11:52 ✅回答済み

Sub test()
    Dim str As String
    str = """This is a pen."""
    MsgBox str
End Sub

上記のようにダブルクォーテーションを文字列中入れたい場合は、""と2回続けてダブルクォーテーションを入力します。このような文字の特殊な表現方法をエスケープシーケンスといいます。

参考サイト:Office TANAKA - Excel VBA Tips[ダブルコーテーションの表示]


2020年12月27日日曜日 12:55 ✅回答済み

変数を定義しないといけませんか?

必ずしも文字列型の変数を定義する必要はありません。メソッドの引数やプロパティなどに直接、文字列リテラルを指定してもかまいません。

それでこの「"」三連技が効かなかったのでしょうか?

三連というか二連ですね。先の例でいえば、
value = """This is a pen."""
という構文において、一見すると三連に見えるのは、
文字列両端の引用符と、エスケープ処理の "" が連なっているためです。

ダブルクォーテーションが文中にあるようなケース…たとえば
『それでこの「"」三連技が効かなかったのでしょうか』
という文章を出力するのであれば、3連続にはならず、このように書きます。

MsgBox "それでこの「""」三連技が効かなかったのでしょうか"
Shee1.Range("A1").Value = "それでこの「""」三連技が効かなかったのでしょうか"

ただし、今回のように半角の「"」であれば文字列中に埋め込めるのですが、
全角の場合はエスケープが効かないので、ChrW 関数を使うなどの工夫が必要になります。

' 「"」
  Sheet1.Range("A1").Value = "「""」半角ダブルクォーテーション"
  Sheet1.Range("A2").Value = "「" & ChrW(&H22) & "」半角ダブルクォーテーション"

' 「"」
' Sheet1.Range("A3").Value = "「""」全角ダブルクォーテーション"
  Sheet1.Range("A4").Value = "「" & ChrW(&HFF02) & "」全角ダブルクォーテーション"

' 「“」
' Sheet1.Range("A5").Value = "「““」左側ダブルクォーテーション"
  Sheet1.Range("A6").Value = "「" & ChrW(&H201C) & "」左側ダブルクォーテーション"

' 「”」
' Sheet1.Range("A7").Value = "「””」右側ダブルクォーテーション"
  Sheet1.Range("A8").Value = "「" & ChrW(&H201D) & "」右側ダブルクォーテーション"

2020年12月27日日曜日 11:57

明日やってみます。このやり方のときは、変数を定義しないといけませんか?私が今日組み上げたVBAソースコードではテキスト用変数はいちいち定義していなくて、それでこの「"」三連技が効かなかったのでしょうか?前に一度やってみて、うまくいかなくて不思議でした。


2020年12月27日日曜日 18:02

うわまた眩暈が…