AscB関数:文字のバイトコードを取得する
AscB 関数は Excel VBA で用意されている関数の一つで、引数に指定した文字のバイトコードを取得することができます。ここでは Excel VBA における AscB 関数の使い方について解説します。
(Last modified: )
AscB関数の定義と使い方
AscW
関数は引数に指定した文字のバイトコードを返します。取得するバイトコードは最初のバイトだけです。
引数に指定する文字列は複数の文字列を指定することもできますが、引数に指定した文字列の先頭の文字のバイトコードを返します。
※AscB
関数とは逆に、文字のバイトコードから文字を取得するには ChrB
関数を使います。詳しくは「ChrB関数:文字のバイトコードから文字を取得する」を参照されてください。
次の例を見てください。
Debug.Print AscB("東") '113 Debug.Print AscB("東京都") '113
AscB
関数は引数の文字列の 1 文字目のバイトコードだけを返すので、どちらも 113 とイミディエイトウィンドウに出力されます。
なお VBA では文字コードとして Unicode(UTF-16) を使用しており、 AscB
関数は、引数の文字に対する Unicode(UTF-16) のコードの最初のバイトを返します。
それでは簡単なサンプルを作成して試してみます。
Option Explicit Sub AscB関数() Range("C3").Value = AscB(Range("B3").Value) Range("C4").Value = AscB(Range("B4").Value) Range("C5").Value = AscB(Range("B5").Value) Range("D3").Value = "&H" & Hex(AscB(Range("B3").Value)) Range("D4").Value = "&H" & Hex(AscB(Range("B4").Value)) Range("D5").Value = "&H" & Hex(AscB(Range("B5").Value)) End Sub
このプログラムを実行すると AscB
関数の引数に B3 セルから B5 セルに入力されている値を 指定したときの戻り値を取得します。そして取得した戻り値を C3 セルから C5 セルにそれぞれ代入します。また同じ値に対する AscB
関数の戻り値を Hex
関数を使って 16 進数に変換した値を D3 セルから D6 セルに代入します。
※ Hex
関数の使い方については「Hex関数:数値を16進数に変換した値を取得する」を参照されてください。
AscB関数が返すバイトコードについて
AscB
関数は引数に指定した文字の最初のバイトのバイトコードを返しますが、実際に何のバイトコードが返されているのか確認してみます。次のようなサンプルを実行しました。
Option Explicit Sub AscB関数() Range("C3").Value = "&H" & Hex(Asc(Range("B3").Value)) Range("C4").Value = "&H" & Hex(Asc(Range("B4").Value)) Range("C5").Value = "&H" & Hex(Asc(Range("B5").Value)) Range("D3").Value = "&H" & Hex(AscW(Range("B3").Value)) Range("D4").Value = "&H" & Hex(AscW(Range("B4").Value)) Range("D5").Value = "&H" & Hex(AscW(Range("B5").Value)) Range("E3").Value = "&H" & Hex(AscB(Range("B3").Value)) Range("E4").Value = "&H" & Hex(AscB(Range("B4").Value)) Range("E5").Value = "&H" & Hex(AscB(Range("B5").Value)) End Sub
このプログラムを実行すると B3 セルから B5 セルに入力されている値を Asc
関数、 AscW
関数、 AscB
関数の引数にそれぞれ指定したときの戻り値を取得し、その戻り値を Hex
関数を使って 16 進数に変換した値を各セルに代入します。
AscB
関数で得られるバイトコードは AscW
で得られる Unicode コードポイントの最初のバイトに対するバイトコードと同じです。これは VBA で使用する文字コードの Unicode(UTF-16) は Unicode のコードポイントと同じ値になるためです(サロゲートペアを除く)。なおデータが格納されるときは下位バイトのあとに上位バイトが格納されるため、下位バイトの方のバイトコードが取得されます。
-- --
Excel VBA における AscB 関数の使い方について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
プログラミングや開発環境構築の解説サイトを運営しています。