【マクロVBA】『 ” 』ダブルクォーテーションの置換!置き換え(Replace)できない原因と対処

便利技

エクセルのマクロVBAの置換機能については別の記事で紹介しました。
置換の記事についてはこちらから☟

【マクロVBA知識 23】文字・数値の置換と完全一致など様々な置換オプション ► 独学エクセル塾 (dokugakuexcel.com)

今回は「”(ダブルクォーテーション)」の置換方法について紹介します。
機会は少ないかもしれませんが、ダブルクォーテーションを置き換えたい場合には必要な知識になります。

数値であればダブルクォーテーションを外さないと計算できません。
後程紹介するのですが、通常の置換ではダブルクォーテーションは置き換えることができないので今回の記事で知識を身に着けてください。

それでは見ていきましょう。




■まずは置換の基礎知識から

本記事を紹介する前にまずは置換の機能を見ていきましょう。
詳しくは紹介しないので詳しくみたい方は冒頭で紹介した記事をご参照ください。

では見本を用意しました。

「B3」「A」という文字があります。
こちらを「B」に置き換えてみましょう。

まずは悪い例を見てみましょう。

Sub AからBへ()

Range(“B3“).Replace What:=A, Replacement:=B

End Sub

内容は簡単です。
B3のセルをAからBに変えるといったプログラムになっています。

しかし実行すると下図のような結果になります。

置き換えできていませんね。

置き換えできない原因として、「A」「B」と打ち込んだ
英文字は変数として処理されるため「A」または「B」という文字で判別されません

変数の記事はこちらから☟

【VBA知識 6】変数とは?変数の一覧と意味・変数の宣言をする ► 独学エクセル塾 (dokugakuexcel.com)

では正しいプログラムを紹介します。
ここで今回の主役、「”(ダブルクォーテーション)」を使用します
使用方法は「A」であれば「”A”」と英字をダブルクォーテーションで囲います

Sub AからBへ()

Range(“B3“).Replace What:=“A”, Replacement:=“B”

End Sub

実行した結果はこちらです。

「A」から「B」へ置き換えることができました。
つまり「”(ダブルクォーテーション)」で英字を囲むことで文字と認識され
置き換えることができる仕組み
です。

置き換えの基礎知識とダブルクォーテーションの機能は理解できましたね。
では本題に移りたいと思います。

■ ” (ダブルクォーテーション)を置き換える

ではダブルクォーテーションを置き換えてみましょう。
再度見本を用意しました。

合計を求める「E3」は数値1と数値2を足している数式を入れているのですが
数値1と数値2にダブルクォーテーションがついているので
文字として処理され、計算ができない状態
です。

では「”(ダブルクォーテーション)」を置き換えてみましょう。

何も知らなけれは下記のようなプログラムを作成すると思います。

①Range(“B3:C3″).Replace What:=”, Replacement:=””
②Range(“B3:C3″).Replace What:=”””, Replacement:=””

①は「”」を空白にしたいので「””」へ置き換え
②は「”」を文字として置き換えたいのでダブルクォーテーションで囲って
  「”””」とし、置換先を「””」にする。

しかし実行した結果はこのようになります。

コンパイルエラー:引数は省略できません。
というエラーが発生しました。

つまり置換元にダブルクォーテーションを入力しても置き換えることができません。

ここで使用するのが「Chr(34)」です。
なんだこれ?と思われた方もいると思いますが
Chr関数を応用した機能になります。

Chr関数の34「”(ダブルクォーテーション)」にあたります。

つまり「 “=Chr(34)」ということですね。

ではプログラムを見てみましょう。

Sub ダブルクォーテーション置換()

Range(“B3:C3”).Replace What:=Chr(34), Replacement:=“”

End Sub

[ダブルクォーテーション=Chr(34)][空白=””]に置き換えるといった意味です。

実行した結果はこのようになります。

無事ダブルクォーテーションを空白にすることができました
Chr関数は面白い関数ですね。

■公式の説明

わかりやすいように説明したため公式と使用する語句が異なりますが

マイクロソフト公式の説明については下記のリンクを参照してください。☟

Chr 関数 (Visual Basic for Applications) | Microsoft Docs

■まとめ

いかがだったでしょうか。
ダブルクォーテーションは文字列として判別するために用いますが
置き換える際には一工夫必要です。

ぜひ今回の知識を活用して置き換えてみてください。
それでは次回の記事でお会いしましょう。

コメント