-
∨目次
- 構文
- 解説
- 使用例
VBA Chr 関数
はじめに
Excel VBA マクロの Chr と ChrW 関数を紹介します。
Chr 関数は、指定した文字コード (Shift_JIS) に対応する文字を返します。
ChrW 関数は、指定した Unicode (UTF-16) に対応する文字を返します。
文字コードを文字に変換したいときに使用します。
-
目次
- 構文
- 解説
- 使用例
構文
Chr(文字コード)
文字コード (Shift_JIS) に対応する文字を取得します。
引数「文字コード」 | 半角文字は 0 ~ 255 の範囲を指定します。 全角文字は -32768 ~ 65536 の範囲を指定します。 |
戻り値の型 | 文字列型 (String) |
ChrW(文字コード)
文字コード (UTF-16) に対応する文字を取得します。
引数「文字コード」 | Unicode (UTF-16) の値を指定します。 |
戻り値の型 | 文字列型 (String) |
変換例
Shift_JIS | Unicode (UTF-16) | 値 |
9 | 9 | タブ |
10 | 10 | ラインフィード |
13 | 13 | キャリッジリターン |
48 | 48 | 0 |
65 | 65 | A |
97 | 97 | a |
-32096 | 12354 | あ |
解説
Chr 関数
Shift_JIS の文字コードを取得するには「Asc 関数」を使用します。
半角文字はアや1やAなどの、カタカナや数字やアルファベットのことです。
全角文字はあや一やAなどの、ひらがなやカタカナや漢字やアルファベットのことです。
「特殊文字と制御文字」のようなコードに直接入力できない文字を入力できます。
ChrW 関数
Unicode (UTF-16) の文字コードを取得するには「AscW 関数」を使用します。
VBA の IDE 上では Shift_JIS に存在しない Unicode 文字を直接入力するとすべて?に変換されます。この関数を使用して入力できるようになります。入力した値を確認するには、セルに設定します。
サロゲートペア文字は 2 文字として扱います。𩸽を入力するには上位-10137と下位-8643を変換してから結合します。負の値になっているのは「AscW 関数」戻り値の型が Integer のためです。
上位と下位の結合したコード171581 (&H29E3D)は文字に変換できません。「エクセル UNICHAR 関数:Unicode を文字に変換する」を使用して入力できます。
Unicode の扱いについて詳しくは「Unicode 文字の入力や読み込み」をご覧ください。
インターネット上にある文字コード表は 16 進数になっています。VBA で 16 進数を入力するには&H3042のように&Hを頭に付けます。
使用例
Chr 関数
Shift_JIS から文字に変換する。
Dim s As String
s = Chr(97)
Debug.Print(s) ' a
s = Chr(122)
Debug.Print(s) ' z
s = Chr(65)
Debug.Print(s) ' A
s = Chr(90)
Debug.Print(s) ' Z
s = Chr(-32096)
Debug.Print(s) ' あ
s = Chr(&H82A0)
Debug.Print(s) ' あ
文字の文字コードを取得する。
Dim i As Integer
i = Asc("A")
Debug.Print(i) ' 65
i = Asc("あ")
Debug.Print(i) ' -32096
ChrW 関数
Unicode (UTF-16) から文字に変換する。
Dim s As String
s = ChrW(65)
Debug.Print (s) ' A
s = ChrW(90)
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) ' 😃
スポンサーリンク