【Excel・Excel VBA】CHAR 関数で『””』(空文字)って?

パソコン関連

結論を先に書きますと、
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つのダブルクォーテーションは仕方ないと割り切ってそういう使い方をしたほうが、気持ち的に幸せになれるような気がしました。
ちょっと悔しい気もしましたが、別に誰になにか言われるわけでもないので、その気持は封印しようと思います。

さちこ

40代2児の母。2011年からフリーランスやってます。東京の東の方在住。
第一子が発達グレー男児で、彼が将来彼の妹に迷惑かけずに生きていけるよう、日々奮闘中です。

さちこをフォローする
パソコン関連
さちこをフォローする

コメント

タイトルとURLをコピーしました