← コード一覧へ戻る
実務文字・日付

文字のUnicode値をAscWで調べる

AscWで先頭文字のUTF-16コード単位を取得し、負の戻り値を0~65535の値へ直して表示します。

実行前に確認

  • 文字列全体ではなく先頭のUTF-16コード単位だけを調べます。空文字列ではエラーになるため事前確認しています。
  • 絵文字などは2つのコード単位で表される場合があります。この例はそれらのUnicodeコードポイント全体を求めるものではありません。
  • Ascは環境の文字コードに依存します。Unicode値を調べるこのWindows向けの例ではAscWを使います。
  • Excel実機での動作は未確認です。コピーした練習用ブックで試してください。

1サンプルコード

Option Explicit

Sub Example7052()
    Dim text As String
    Dim codeUnit As Long

    text = "あ"
    If Len(text) = 0 Then
        MsgBox "1文字以上の文字列を指定してください。", vbExclamation
        Exit Sub
    End If
    codeUnit = AscW(text)
    If codeUnit < 0 Then codeUnit = codeUnit + 65536
    MsgBox "10進数: " & codeUnit & vbCrLf & _
           "16進数: U+" & Right$("0000" & Hex$(codeUnit), 4)
End Sub

図で見るあのUnicode値を調べる

イメージ図

先頭文字「あ」のUTF-16コード単位を10進数と16進数で表示します。

  1. 1文字を用意

    text = "あ"。空文字列なら終了

  2. コード単位を取得

    AscW(text)で12354を取得。負の値なら65536を加えて補正

  3. 12354とU+3042を表示

    Hex$とRight$で4桁の16進表記を組み立てて表示

Windows向けです。絵文字など2つのコード単位からなる文字のコードポイント全体は求めません。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
  1. 1

    Windows版デスクトップExcelの練習用ブックを.xlsm形式で保存します。Alt+F11でVBEを開き、[挿入]→[標準モジュール]で作った空のモジュールに、Option Explicitから末尾まで、この例だけを貼り付けます。

  2. 2

    Windows版Excelで使います。コード中の「あ」をそのままにして実行します。

  3. 3

    Example7052のSub内にカーソルを置き、F5キーで実行します。

  4. 4

    「10進数: 12354」「16進数: U+3042」と表示されます。

使っている機能の公式ドキュメント(Microsoft Learn)