結論を先に書きますと、
CHAR 関数で空文字は『0』? ない? みたいなので、統一感などは求めず
"""" (もしくは) ""
を使うのが無難だった、というだけの話です。
Excel VBA の『Formula』や『FormulaR1C1』を使ってセルに数式を書き込む場合、ダブルクォーテーションを重ねて書くとわけがわからなくなるので、Chr 関数を使って特殊な文字を表示することが多いです。
Chr 関数でよく使うのは
Chr(10) → セル内改行(vbLf)
Chr(13) → 改行(vbCr)
Chr(32) → 半角スペース
Chr(8481) → 全角スペース
Chr(34) → ダブルクォーテーション(")
あたりですが、空文字(“”)にあたる文字は見つけられませんでした。
VBA の Chr 関数と Excel の CHAR 関数はおんなじよーなモンなので(テキトー…)、CHAR 関数の逆である CODE 関数で調べても『#VALUE?』となってしまいました。
例えば Excel で
=SUBSTITUTE(A1," ","")
と書けば、A1セルに書かれた内容から半角スペース(” “)がなくなった(“”)ものが表示されます。
これを Excel VBA の『Formula』で書くとこんな感じになります。
Activecell.Formula = "=SUBSTITUTE(A1, "" "", """")"
ただ、この『”” “”』とか『””””』とかがややこしくてめんどくさくなってきてしまうので、
"" "" → CHAR(32)
と書きます。
で、次の『””””』にあたる CHAR 関数の番号が知りたかったんです。
調べてもそれっぽいのは出てこず。
CHAR(0)だとエラーになってしまいます。
Copilot さんに聞いても、なんだかぐるぐる堂々巡りになって、結局結論を出してくれません。
なんとなく統一感が欲しくて CHAR 関数にこだわってしまっていたんですが、原点に戻って
Activecell.Formula = "=SUBSTITUTE(A1, CHAR(32), """")"
と書くのが無難でした。
…これくらい短い文字列なら全部ダブルクォーテーションでもいいかもしれませんが、長く長くなると本当に理由がわからなくなってしまうので…。
最初と最後のダブルクォーテーションは当然として、空文字用の4つのダブルクォーテーションは仕方ないと割り切ってそういう使い方をしたほうが、気持ち的に幸せになれるような気がしました。
ちょっと悔しい気もしましたが、別に誰になにか言われるわけでもないので、その気持は封印しようと思います。
コメント