文字の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文字を用意
text = "あ"。空文字列なら終了
コード単位を取得
AscW(text)で12354を取得。負の値なら65536を加えて補正
12354とU+3042を表示
Hex$とRight$で4桁の16進表記を組み立てて表示
Windows向けです。絵文字など2つのコード単位からなる文字のコードポイント全体は求めません。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
- 1
Windows版デスクトップExcelの練習用ブックを.xlsm形式で保存します。Alt+F11でVBEを開き、[挿入]→[標準モジュール]で作った空のモジュールに、Option Explicitから末尾まで、この例だけを貼り付けます。
- 2
Windows版Excelで使います。コード中の「あ」をそのままにして実行します。
- 3
Example7052のSub内にカーソルを置き、F5キーで実行します。
- 4
「10進数: 12354」「16進数: U+3042」と表示されます。