文字コードを調べるには、VBAのAsc関数とAscW関数、ワークシート関数のCodeとUnicodeがあります。これらのうち、最も多くの文字種に対応できるのがワークシート関数のUnicodeです。
対象が英数字などに限定できるならばどれを使っても構いませんが、文字化けの原因や謎の記号文字の正体を調査するような場合にはUnicodeが優利です。
ワークシート関数のUnicode
WorksheetFunction.Unicode(Text)文字列を指定した場合は、1文字目が判定されます。
Unicode関数の戻り値は10進数です。文字コードは16進数で表すことも多いので、必要に応じてDEC2HEX関数を併用しましょう。
サロゲートペア文字に対応します。
戻り値を16進数にしたとき、通常文字は4桁になりますが、サロゲートペア文字は5桁になります。
その他の関数で正しく判定できないケース
VBAのAsc、AscW、ワークシート関数のCodeでは、文字コードは返すものの正しく判定できていないことがあります。判定不能としてエラーを返してくれない点が要注意です。
Asc関数やCode関数の戻り値63
戻り値の63は「?」に相当し、判定不能という結果を表します。AscやCodeは、ASCII(JIS)コードを返す関数なので、非アスキー文字は判定不能となります。
AscW関数の戻り値のマイナス値
AscW関数の戻り値は0~65535(0x0000~0xFFFF)のはずですが、マイナス値が返ることがあります。このマイナス値は一種の誤判定なので、そのままChrW関数に渡しても元の文字にはなりません。マイナス値が返るのは、対象文字がサロゲートペアの場合です。AscW関数は、サロゲートペア1字を2字とみなしてしまい前半のコードだけを返してしまうのです。
Asc関数の戻り値のマイナス値
Asc関数の戻り値は-32768~32767なのでマイナス値が返っても正常です。しかし、そのままの値をCHAR関数に渡しても元の文字にはならず、解決には10進数・16進数のややこしさを伴います。上記例のように「æ」に97を返す(97は「a」)といったこともあるので、実用は避けるほうが無難かもしれません。
