和風スパゲティのレシピ

日本語でコーディングするExcelVBA

掛算を置換するとワイルドカード*と認識される

知らずに落ちると抜け出せなくなるVBAの落とし穴です。

  • 数式を置換したらなぜか=まで消えた
  • 消費税を置換したら式ごと消えた
  • アスタリスクを置換したいのにできない

あたりにお悩みの方は、この落とし穴に落ちていないかご確認ください。

発生する罠

もうタイトルに書いてありますが、あいまい検索に使用するワイルドカード「*」と、掛け算に使用する「*」は同じ文字です。

掛け算を置換する際に、「*」も含めて置換をすると、
*の部分は任意の文字列と認識されるため、置換が暴走します。


例:「*1.08」を「*1.1」に置換した場合

=A2*1.08

*1.1

(○○1.08がすべて*1.1に)


考えてみれば当たり前のことなんですが、
私はこの「同じ記号」という事実に気付いていませんでした。


=1*2は脳内では「かける」と読むし、
*.xlsmは「ナントカ.xlsm」みたいに脳内で読んでいるので、
この二つが「同じ」と認識はしていなかったですね(笑)


「=A2*1.08」をよーく眺めても、何が起こったのか全く分からなかったのに、
置換ダイアログボックスを開いたら一瞬で分かってしまいました。

*が出現した場所によって、脳内で暗黙の型変換が行われている様子です。
脳みそってすごい。

解決策

~*」とすることで、ワイルドカードではない、アスタリスクという記号をターゲットに置換できます。


例「~*0.08」を「*1.1」に置換する

=A2*1.08

=A2*1.1


解決策は非常に簡単ですね。