こんにちは、今回の記事はExcelのVBAマクロ内で環境依存文字(機種依存文字)を扱うにはどうすれば?という記事になります。
VBAマクロでチェックボックス「☑」を入力してみたところ入力後「?」になってしまいまた。セルに代入しても文字は「?」のままでした。どうすればいいのか?それでは、いってみましょう!
事象詳細:環境依存文字がVBAで「?」になってしまう
まず環境依存文字とは?
環境依存文字(機種依存文字)は、文字を表示する使用環境によっては表示できない文字のことです。使う環境で表示できるかできないかが決定する文字です。
自分のパソコンでは表示されていても、相手のパソコンに送ると文字化けしたり「?」になってしまったりということが起こります。
パソコンで文字を打ち込むと「[環境依存]」と文字横に表示されることがありますが、これが表示環境によっては表示されない文字という事になります。
今回の事象
今回の事象は、Excelのマクロで環境依存文字を使おうとしたところ、入力後にその文字が「?」になってしまうという事が起こりました。
VBAを記入するVisual Basic for Applicationsの画面で環境依存文字を入力すると「?」になるのです。今回はマクロで「☑」や「㉑」を入力しようとすると「?」になります。どうやらマクロには直接環境依存文字は使えないような動きに見えます。
対処:Chrw関数を使って環境文字を入力する
環境文字を扱うには、ChrW関数を使います。
Chrw関数とは?
ChrW関数は、Unicode(ユニコード)の文字コードで文字列を指定する関数です。マクロ内では直接環境依存文字を表示出来ませんが、出力したExcelでは表示できるようにするために、文字コードで文字を指定します。
使い方は以下のポイントの通りです。
ChrW関数に「&H」を付けて文字コードを指定する
ChrW("&H****")
(※****の部分は文字コード)
☑を指定する場合の使用例:ChrW("&H2611")
環境文字「☑」の文字コードは2611になるので、ChrW関数で"&H2611"と指定します。&Hを付ける理由については長くなるのでまた別記事で。
文字コードの調べ方
Excelのセルの方(マクロを記載するところではなく)に以下の式を入力してみてください。
例えば☑の環境依存文字の文字コードを調べたい場合は「=DEC2HEX(UNICODE("☑"))」とセルの式に入力します。すると結果が「2611」となります。この2611が☑の文字コードとなります。
なので、マクロに使う際はここで調べた文字コードを使ってChrW("&H2611")とします。
サンプルマクロ:セルA1に環境文字を代入する
使用例として、環境文字「☑」(=文字コード2611)をマクロでセルA1に代入するサンプルマクロを紹介します。
Range("A1").Value = ChrW("&H2611")
実行するとセルA1に「☑」の文字が代入されます。
さいごに
いかがだったでしょうか。同じような疑問を持たれた方の参考になれば幸いです。それでは、また次の記事で!