サイトについて      連絡先   検索

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)
99タブ
1010ラインフィード
1313キャリッジリターン
48480
6565A
9797a
-3209612354

解説

Chr 関数

Shift_JIS の文字コードを取得するには「Asc 関数」を使用します。

半角文字は1Aなどの、カタカナや数字やアルファベットのことです。

全角文字はなどの、ひらがなやカタカナや漢字やアルファベットのことです。

特殊文字と制御文字」のようなコードに直接入力できない文字を入力できます。

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) ' 😃
  • 目次
    • 構文
    • 解説
    • 使用例