【VBA備忘録】VBAで特殊記号や禁則文字を入力したい!

2024年3月6日

皆さんこんにちは、美容院の予約が面倒くさすぎてしばらく放置していたら 毎日壊滅的な寝癖がつくようになりました。がんばって予約します。

「普通じゃない文字」を使いたい

今日はVBAをやっているとたまにぶち当たる「普通じゃない」文字たち。 例えば、「”(ダブルクォーテーション)」はIF文などで抽出したりするときに IF Cells(1,1)="" Thenと入れてもエラーになってしまいうまくいきません。 他にも「✓(チェックマーク)」のような環境依存文字はVBAのコードに入力すると?になります。 私が働いてる会社は中国との取引があるため中国語で作られたExcelシートをVBAで制御しようと試みましたが、中国語の漢字がVBAで使えず苦労していました。他にもハングル文字やラテン文字など他の国の文字って使いにくい印象です。

Shironeco(嫁)
Shironeco(嫁)
VBAのコードに中国漢字を入れてると全部「?」になっちゃうのよね~
使わないようにすればいいんですが、使わないと別の方法にしなければいけなかったりして困るときもたまにある… そんなあなたに朗報です。 それ全部ExcelのUNICODE関数とVBAのChrW関数で解決できます。

コードポイントを使って文字を入力する

UNICODE関数とは

ExcelにはUNICODE関数という 「文字列の最初の文字に対応する番号(コードポイント)を返してくれる」 非常に便利な関数があります。 例えば「」のコードポイントを知りたい場合は

=UNICODE(“♡") と入力すると9825と返してくれます。 ひらがなやカタカナ、漢字など日本語はもちろん数字や記号、外国の文字でもコードポイントは返ってきます。

UNICODEとはコードポイントとはなんぞやという方はこちらのサイトがとてもわかりやすかったので
一読されるとよろしいかと思います。

ChrW関数を使ってコードポイントから文字を入力する

UNICODE関数のなにが便利なのかというとVBAのChrW関数を使えば、コードポイントから文字を入力できるからです。

UNICODE関数で文字のコードポイントを抽出した表

A列の文字のコードポイントをD列に出した表です

VBAのChrW関数でE列にコードポイントに対する文字を入力する

=ChrW(コードポイント) →コードポイントを文字に変換します

Sub UNICODEの帰還()

’一番下の行までループ
For i = 3 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

’ChrW関数でD列の値を文字にする
a = ChrW(ActiveSheet.Cells(i, 4))
’E列に入力する

ActiveSheet.Cells(i, 5) = a

Next i

End Sub

D列のUNICODE関数で出したコードポイントを E列に文字として入力するプログラムです。

実行した結果は

E列にA列と同じ文字が入力されています。

Point
VBAのAscW関数(=AscW(“文字"))でUNICODE関数と同じことはできますが、特殊文字などはコードに直接入力できないため、ExcelのUNICODE関数でコードポイントを調べてからChrW関数を使った方が楽だと思います。

超絶親切!主なコードポイント一覧

主なコードポイントを載せておきます。
VBAでChrW関数を使用すれば簡単に特殊文字が使用できます。

記号

 全角/半角記号名UNICODE
半角ダブルクォーテーション34
全角ダブルクォーテーション8220
全角ダブルクォーテーション8221
半角チェック10003
半角チェック9745
半角チェック10004
 半角スペース32
 全角スペース12288
全角ノノ字点/同じく記号12291
全角丸1/〇19312
全角丸2/〇29313
全角丸3/〇39314
全角丸4/〇49315
全角丸5/〇59316
全角丸6/〇69317
全角丸7/〇79318
全角丸8/〇89319
全角丸9/〇99320
全角丸10/〇109321
半角ハート9825
半角ダイヤ9826
半角スペード9828
半角クラブ9831
半角ハート9829
半角ダイヤ9830
半角スペード9824
半角クラブ9827
半角温泉9832
半角音符9833
全角音符9834
半角音符9835
半角音符9836
全角音符9837
半角音符9838
全角音符9839
全角9733
全角9734

特殊文字

 全角/半角記号名UNICODE
全角明治13182
全角大正13181
全角昭和13180
全角平成13179
半角令和13055
半角株式会社12945
半角有限会社12946
半角株式会社13183
全角株式会社13261
全角電話8481
半角電話9742
半角電話9990
全角ミリメートル13212
全角センチメートル13213
全角キロメートル13214
半角平方ミリメートル13215
半角平方センチメートル13216
全角平方メートル13217
半角平方キロメートル13218
半角立方ミリメートル13219
半角立方センチメートル13220
半角立方メートル13221
半角立方キロメートル13222
半角ミリリットル13206
半角デシリットル13207
半角リットル8467
半角キロリットル13208
全角ミリ13129
全角メートル13133
全角リットル13137
全角ナンバー8470
全角丸上/○上12964
全角丸中/○中12965
全角丸下/〇下12966
全角丸左/○左12967
全角丸右/○右12968