'Unicodeから文字入力 ActiveCell = ChrW(9451)
'Unicodeの文字コードを取得 Debug.Print AscW(ActiveCell.Text)
VBAで無効な環境依存文字について
PCの環境によって使用ができる「環境依存文字」という特別な表現をする文字があります
画像のような文字になります
これは「11」の変換で出てきた文字なのですが、これを見ているPCでは存在しないかもしれません、それが環境依存文字です
さらにこの文字の困ったことに、VBAで認識されない文字が存在しています
画像の文字の場合に、アクティブセルの文字列をイミディエイトに出力しようとすると「?」が返されます
これはVBAで存在しない文字列のため、表現ができない文字になります
PCの環境で使用できるはずが、VBAははじいてしまいます
わがままな困ったさんではありますねぇ
なので、これをワークシートに入力しようとして「?」を指定しても、当然「?」が入力されるだけで画像の文字を入力することは出来ません
コード解説
そこで使用するのがChrW関数です
ActiveCell = ChrW(9451)
この関数はUnicodeの文字コードで指定した文字を返す関数です
このコードを実行すると、アクティブセルに画像の環境依存文字を入力します
VBAでは無効なので、イミディエイトに出力しても「?」になるだけですが、ワークシートに出力すればちゃんと文字が入力されます
またメモリ上であれば取得は出来ているので、変数に取得させることも可能です
ただ、この文字コードは大量にあり、とても掲載できるレベルのものではありませんので調べる必要があります
Debug.Print AscW(ActiveCell.Text)
AscW関数を使用することで、指定文字のコードを調べることが出来ます
この関数は引数に指定した文字の1文字目のUnicodeの文字コードを返す関数です
この関数で使用したい環境依存文字のコードを調べたうえで、ChrW関数を使用すれば入力することが出来ます
基本的には環境依存なのであまり使用したくない文字種ですが、やはり「㈱」なんかは結構便利なので使いたくもなります
ちなみに、このUnicodeはMac版ではAscW関数でコードの取得はできません