更新日:、 作成日:
VBA Chr 関数:文字コードを文字に変換する
はじめに
Excel VBA マクロの Chr 関数と ChrW 関数から文字コードを文字に変換する方法を紹介します。
Chr 関数は、指定した文字コード (Shift_JIS) を対応する文字に変換します。
ChrW 関数は、指定した Unicode (UTF-16) を対応する文字に変換します。
半角文字なら 0 ~ 255 の範囲を指定します。65 なら A を返します。ASCII コードと同じ値です。
Unicode のサロゲートペア文字 𩸽 を入力するには、上位 -10137 と下位 -8643 を変換してから結合します。
文字コードを文字に変換したいときに使用します。
Chr 関数、ChrW 関数の引数と戻り値
Chr(文字コード)
文字コード (Shift_JIS) を対応する文字に変換します。
| 引数「文字コード」 | 半角文字は 0 ~ 255 の範囲で指定します。 全角文字は -32768 ~ 65536 の範囲で指定します。 | 
| 戻り値の型 | 文字列型 (String) | 
ChrW(文字コード)
文字コード (UTF-16) を対応する文字に変換します。
| 引数「文字コード」 | Unicode (UTF-16) の値を指定します。 | 
| 戻り値の型 | 文字列型 (String) | 
解説
Chr 関数
Shift_JIS の文字コードから文字に変換します。
引数「文字コード」が 0 ~ 255 のときは半角で、A、1、ア などに変換されます。ASCII コードと同じ値です。
引数「文字コード」がそれ以外のときは全角で、あ、亜、A などに変換されます。それ以外のひらがなやカタカナや漢字やアルファベットのことです。
コードに直接入力できない「特殊文字と制御文字」を入力できます。
Shift_JIS の文字コードを取得するには「Asc 関数」を使用します。
ChrW 関数
Unicode (UTF-16) を文字に変換します。VBA のコードに Shift_JIS に存在しない Unicode 文字 頰 などを入力すると、すべて ? に文字化けします。
引数「文字コード」が 0 ~ 127 のときは半角英数字で、A、1 などに変換されます。ASCII コードと同じ値です。
Unicode のサロゲートペア文字は 2 文字として扱います。𩸽 を入力するには上位 -10137 と下位 -8643 を変換してから結合します。負の値になっているのは「AscW 関数」の戻り値の型が Integer のためです。
上位と下位を結合した 171581 (&H29E3D) は文字に変換できません。Excel の「エクセル UNICHAR 関数:Unicode を文字に変換する」を使用して入力できます。
インターネット上にある文字コード表は 16 進数になっていることが多いです。VBA で 16 進数を入力するには &H3042 のように &H を頭に付けます。
Unicode (UTF-16) の文字コードを取得するには「AscW 関数」を使用します。
スポンサーリンク
文字コード一覧
Chr 関数の引数「文字コード」に 0 ~ 255 を指定して、変換される文字の一覧です。
[] で囲っているのは特殊文字の略称です。() で囲っているのは VBA の定数です。
| 文字コード | 文字 | 
| 0 | Null 文字 (vbNullChar) | 
| 1 | [SOH] | 
| 2 | [STX] | 
| 3 | [ETX] | 
| 4 | [EOT] | 
| 5 | [ENQ] | 
| 6 | [ACK] | 
| 7 | [BEL] | 
| 8 | バックスペース (vbBack) | 
| 9 | タブ (vbTab) | 
| 10 | ラインフィード (vbLf) | 
| 11 | 垂直タブ (vbVerticalTab) | 
| 12 | フォームフィード (vbFormFeed) | 
| 13 | キャリッジリターン (vbCr) | 
| 14 | [SO] | 
| 15 | [SI] | 
| 16 | [DLE] | 
| 17 | [DC1] | 
| 18 | [DC2] | 
| 19 | [DC3] | 
| 20 | [DC4] | 
| 21 | [NAK] | 
| 22 | [SYN] | 
| 23 | [ETB] | 
| 24 | [CAN] | 
| 25 | [EM] | 
| 26 | [SUB] | 
| 27 | [ESC] | 
| 28 | [FS] | 
| 29 | [GS] | 
| 30 | [RS] | 
| 31 | [US] | 
| 32 | スペース | 
| 33 | ! | 
| 34 | " | 
| 35 | # | 
| 36 | $ | 
| 37 | % | 
| 38 | & | 
| 39 | ' | 
| 40 | ( | 
| 41 | ) | 
| 42 | * | 
| 43 | + | 
| 44 | , | 
| 45 | - | 
| 46 | . | 
| 47 | / | 
| 48 | 0 | 
| 49 | 1 | 
| 50 | 2 | 
| 51 | 3 | 
| 52 | 4 | 
| 53 | 5 | 
| 54 | 6 | 
| 55 | 7 | 
| 56 | 8 | 
| 57 | 9 | 
| 58 | : | 
| 59 | ; | 
| 60 | < | 
| 61 | = | 
| 62 | > | 
| 63 | ? | 
| 64 | @ | 
| 65 | A | 
| 66 | B | 
| 67 | C | 
| 68 | D | 
| 69 | E | 
| 70 | F | 
| 71 | G | 
| 72 | H | 
| 73 | I | 
| 74 | J | 
| 75 | K | 
| 76 | L | 
| 77 | M | 
| 78 | N | 
| 79 | O | 
| 80 | P | 
| 81 | Q | 
| 82 | R | 
| 83 | S | 
| 84 | T | 
| 85 | U | 
| 86 | V | 
| 87 | W | 
| 88 | X | 
| 89 | Y | 
| 90 | Z | 
| 91 | [ | 
| 92 | \ | 
| 93 | ] | 
| 94 | ^ | 
| 95 | _ | 
| 96 | ` | 
| 97 | a | 
| 98 | b | 
| 99 | c | 
| 100 | d | 
| 101 | e | 
| 102 | f | 
| 103 | g | 
| 104 | h | 
| 105 | i | 
| 106 | j | 
| 107 | k | 
| 108 | l | 
| 109 | m | 
| 110 | n | 
| 111 | o | 
| 112 | p | 
| 113 | q | 
| 114 | r | 
| 115 | s | 
| 116 | t | 
| 117 | u | 
| 118 | v | 
| 119 | w | 
| 120 | x | 
| 121 | y | 
| 122 | z | 
| 123 | { | 
| 124 | | | 
| 125 | } | 
| 126 | ~ | 
| 127 | [DEL] | 
| 128 | |
| 129 | |
| 130 | |
| 131 | |
| 132 | |
| 133 | |
| 134 | |
| 135 | |
| 136 | |
| 137 | |
| 138 | |
| 139 | |
| 140 | |
| 141 | |
| 142 | |
| 143 | |
| 144 | |
| 145 | |
| 146 | |
| 147 | |
| 148 | |
| 149 | |
| 150 | |
| 151 | |
| 152 | |
| 153 | |
| 154 | |
| 155 | |
| 156 | |
| 157 | |
| 158 | |
| 159 | |
| 160 | |
| 161 | 。 | 
| 162 | 「 | 
| 163 | 」 | 
| 164 | 、 | 
| 165 | ・ | 
| 166 | ヲ | 
| 167 | ァ | 
| 168 | ィ | 
| 169 | ゥ | 
| 170 | ェ | 
| 171 | ォ | 
| 172 | ャ | 
| 173 | ュ | 
| 174 | ョ | 
| 175 | ッ | 
| 176 | ー | 
| 177 | ア | 
| 178 | イ | 
| 179 | ウ | 
| 180 | エ | 
| 181 | オ | 
| 182 | カ | 
| 183 | キ | 
| 184 | ク | 
| 185 | ケ | 
| 186 | コ | 
| 187 | サ | 
| 188 | シ | 
| 189 | ス | 
| 190 | セ | 
| 191 | ソ | 
| 192 | タ | 
| 193 | チ | 
| 194 | ツ | 
| 195 | テ | 
| 196 | ト | 
| 197 | ナ | 
| 198 | ニ | 
| 199 | ヌ | 
| 200 | ネ | 
| 201 | ノ | 
| 202 | ハ | 
| 203 | ヒ | 
| 204 | フ | 
| 205 | ヘ | 
| 206 | ホ | 
| 207 | マ | 
| 208 | ミ | 
| 209 | ム | 
| 210 | メ | 
| 211 | モ | 
| 212 | ヤ | 
| 213 | ユ | 
| 214 | ヨ | 
| 215 | ラ | 
| 216 | リ | 
| 217 | ル | 
| 218 | レ | 
| 219 | ロ | 
| 220 | ワ | 
| 221 | ン | 
| 222 | ゙ | 
| 223 | ゚ | 
| 224 | |
| 225 | |
| 226 | |
| 227 | |
| 228 | |
| 229 | |
| 230 | |
| 231 | |
| 232 | |
| 233 | |
| 234 | |
| 235 | |
| 236 | |
| 237 | |
| 238 | |
| 239 | |
| 240 | |
| 241 | |
| 242 | |
| 243 | |
| 244 | |
| 245 | |
| 246 | |
| 247 | |
| 248 | |
| 249 | |
| 250 | |
| 251 | |
| 252 | |
| 253 | |
| 254 | |
| 255 | 
使用例、Chr 関数
Chr 関数の使用例を紹介します。
文字コードを文字に変換する
文字コード (Shift_JIS) を文字に変換します。
Dim s As String
s = Chr(48)
Debug.Print(s) ' 0
s = Chr(57)
Debug.Print(s) ' 9
s = Chr(65)
Debug.Print(s) ' A
s = Chr(90)
Debug.Print(s) ' Z
s = Chr(97)
Debug.Print(s) ' a
s = Chr(122)
Debug.Print(s) ' z
s = Chr(-32096)
Debug.Print(s) ' あ
s = Chr(&H82A0)
Debug.Print(s) ' あ文字の文字コードを取得する
文字の文字コードを取得します。
Dim i As Integer
i = Asc("0")
Debug.Print(i) ' 48
i = Asc("A")
Debug.Print(i) ' 65
i = Asc("あ")
Debug.Print(i) ' -32096使用例、ChrW 関数
ChrW 関数の使用例を紹介します。
Unicode を文字に変換する
Unicode (UTF-16) を文字に変換します。
Dim s As String
s = ChrW(48)
Debug.Print(s) ' 0
s = ChrW(57)
Debug.Print(s) ' 9
s = ChrW(65)
Debug.Print(s) ' A
s = ChrW(90)
Debug.Print(s) ' Z
s = ChrW(97)
Debug.Print(s) ' a
s = ChrW(122)
Debug.Print(s) ' z
s = ChrW(12354)
Debug.Print(s) ' あ
s = ChrW(38960)
Range("A1").Value = s ' 頰、Unicode 文字サロゲートペア文字の文字コードを文字に変換する
サロゲートペア文字の上位と下位を結合して変換する。
Range("A1").Value = ChrW(-10137) & ChrW(-8643) ' 𩸽、サロゲートペア文字
Dim s As String
s = WorksheetFunction.Unichar(171581) ' 𩸽
Dim high As Integer ' 上位コード
Dim low As Integer  ' 下位コード
high = AscW(Mid(s, 1, 1))
low = AscW(Mid(s, 2, 1))
Debug.Print(high) ' -10137、上位コード
Debug.Print(low)  ' -8643、下位コード
Range("A2").Value = ChrW(high) & ChrW(low) ' 𩸽サロゲートペア文字の結合された Unicode (UTF-16) を文字に変換する。
Range("A1").Value = WorksheetFunction.Unichar(171581)  ' 𩸽
Range("A1").Value = WorksheetFunction.Unichar(&H29E3D) ' 𩸽
Range("A2").Value = WorksheetFunction.Unichar(128515)  ' 😃
Range("A2").Value = WorksheetFunction.Unichar(&H1F603) ' 😃スポンサーリンク
