質問
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
うわまた眩暈が…