【VBA備忘録】VBAで特殊記号や禁則文字を入力したい!
皆さんこんにちは、美容院の予約が面倒くさすぎてしばらく放置していたら 毎日壊滅的な寝癖がつくようになりました。がんばって予約します。
「普通じゃない文字」を使いたい
今日はVBAをやっているとたまにぶち当たる「普通じゃない」文字たち。 例えば、「”(ダブルクォーテーション)」はIF文などで抽出したりするときに IF Cells(1,1)="”" Thenと入れてもエラーになってしまいうまくいきません。 他にも「✓(チェックマーク)」のような環境依存文字はVBAのコードに入力すると?になります。 私が働いてる会社は中国との取引があるため中国語で作られたExcelシートをVBAで制御しようと試みましたが、中国語の漢字がVBAで使えず苦労していました。他にもハングル文字やラテン文字など他の国の文字って使いにくい印象です。
コードポイントを使って文字を入力する
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列と同じ文字が入力されています。
超絶親切!主なコードポイント一覧
主なコードポイントを載せておきます。
VBAでChrW関数を使用すれば簡単に特殊文字が使用できます。
記号
全角/半角 | 記号名 | UNICODE | |
“ | 半角 | ダブルクォーテーション | 34 |
“ | 全角 | ダブルクォーテーション | 8220 |
” | 全角 | ダブルクォーテーション | 8221 |
✓ | 半角 | チェック | 10003 |
☑ | 半角 | チェック | 9745 |
✔ | 半角 | チェック | 10004 |
半角 | スペース | 32 | |
全角 | スペース | 12288 | |
〃 | 全角 | ノノ字点/同じく記号 | 12291 |
① | 全角 | 丸1/〇1 | 9312 |
② | 全角 | 丸2/〇2 | 9313 |
③ | 全角 | 丸3/〇3 | 9314 |
④ | 全角 | 丸4/〇4 | 9315 |
⑤ | 全角 | 丸5/〇5 | 9316 |
⑥ | 全角 | 丸6/〇6 | 9317 |
⑦ | 全角 | 丸7/〇7 | 9318 |
⑧ | 全角 | 丸8/〇8 | 9319 |
⑨ | 全角 | 丸9/〇9 | 9320 |
⑩ | 全角 | 丸10/〇10 | 9321 |
♡ | 半角 | ハート | 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 |
- 【VBA備忘録】初心者脱却~コピペは配列を使え!~
- 【VBA備忘録】もっと爆速!複数の別ブックを開かずに値を取得する(テキスト編)
- 【VBA備忘録】爆速!別ブックを開かずに値を取得する
- 【VBA備忘録】オリジナル関数を作って月の英語表記を数字に変更する
- 【VBA備忘録】給料日が土日祝のとき前日を取得する(会社カレンダー)
- 【VBA備忘録】ListObject(テーブル)で複数列を選択する(Vlookup)
- 【VBA備忘録】リボンにマクロを追加してクイック起動(Outlook編)
- 【VBA備忘録】VBAで特殊記号や禁則文字を入力したい!
- 【VBA備忘録】Matchで日付が使えない
- 【VBA備忘録】受信したメールから添付ファイルを保存する(Outlook編)