和風スパゲティのレシピ

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

環境依存文字をセルに出力する - ChrW関数

環境依存文字をコード上に書こうとすると、
↓のように「?」マークになってしまいます。

Range("A1").Value = "?"

 
このようにコード上(VBE)に表示できない環境依存文字を、
セルに出力する方法を解説します。

文字コードを受け取って文字を取得するChrW関数

VBE上で「?」になってしまう環境依存文字をUnicode文字と呼びます。

例えば㉑~㊿などもよく使うUnicode文字の代表例ですね。


Unicode文字をセルに出力するには、ChrW関数を使って以下のコードを実行します。

Range("A1").Value = ChrW(12991)

 
このコードを実行すると、A1セルに㊿が出力されます。


ChrW関数は「Unicode上の文字コード番号を受け取って文字を取得する」関数で、
㊿の文字コードである12991を渡すことで、VBE上で㊿を扱っています。


これ以外の方法で扱うことはできませんので、
Unicode文字が混じった文字列を出力する場合は愚直に&で結合してください。

Range("A1").Value = "第" & ChrW(12991) & "番" ' 第㊿番

 

Unicodeの文字コード番号を調べる方法

先ほど㊿を出力するときに使用した「12991」は、㊿の文字コード番号です。

これを調べるにはググってもよいのですが、
Excel・VBAで作業中であるなら以下の2つの方法が簡単です。

シート関数「UNICODE関数」で求める

例えばA1セルに「㊿」と入力し、
B1セルに「=UNICODE(A1)」とすれば㊿の文字コード番号が表示されます。

それをそのままVBAで使用すればOKです。

VBA関数「AscW関数」で求める

同じくA1セルに「㊿」と入力した状態でA1セルを選択し、
イミディエイトウィンドウで「?AscW(Selection)」を実行しても、
㊿の文字コード番号を調べることができます。


「?Selection.Interior.Color」や「 ?Selection.Column」 など、
イミディエイトウィンドウで選択セルの情報を調べる癖がついている方は、
この方法で調べるのもおすすめです。


お好きな方をお使いください。