構文
Len(Expression) As Variant
LenB(Expression) As Variant
Expression・・・文字数を取得したい「文字列」・「値」を指定します。
戻り値 ・・・Variant
戻り値 ・・・Variant
変数や文字列の文字数を抜き出しします。
LenB関数はバイト数単位の抜出だが、注意が必要
ワークシート関数のLenB関数(Shift-JIS形式)
→半角文字を1Byte、全角文字を2Byteとして取得。
VBA関数のLenB関数(DBCS形式)
→半角文字を2Byte、全角文字を2Byteとして取得。
※LeftB関数/RightB関数/MidB関数と同じ考えですね。
Len関数、LenB関数のサンプルコード
Public Sub test_len_lenB() '■半角文字のみの場合 MsgBox Len("123") '3 MsgBox LenB("123") '6(1バイト文字でも2バイト換算) '■全角文字のみの場合 MsgBox Len("あいうえお") '5 MsgBox LenB("あいうえお") '10(1バイト文字でも2バイト換算) '■半角/全角混在の場合 MsgBox Len("あいうえお123") '8 MsgBox LenB("あいうえお123") '16(1バイト文字でも2バイト換算) '■正しくバイト数を取得したい場合は、Shift-JIS形式に変換する MsgBox LenB(StrConv("123", vbFromUnicode)) '3 MsgBox LenB(StrConv("あいうえお", vbFromUnicode)) '10 MsgBox LenB(StrConv("あいうえお123", vbFromUnicode)) '13 End Sub
注意点
- バイト数で取得する(LenB関数)場合、且つ全角文字がある場合は注意が必要です。 ■LenB関数の注意点
DBSC→Shift-JISに変換しないと使用できない
Shift-JISに変換しても全角文字が含まれる、且つ文字数が奇数の場合は注意必要 - プログラム上はそのままLenB関数を使用するのは辞めた方が望ましいでしょう。
(StrConv関数で変換をお勧めします)
また、Len関数とLenB関数を併用するのもコードの可読性が落ちるので併用はおすすめしません。 - ワークシート関数のLenB関数はShift-JIS形式で取得します。
関連記事
文字列の左端から一部を取得する【Left関数】【LeftB関数】【ExcelVBA】
文字列の右端から一部を取得する【Right関数】【RightB関数】【ExcelVBA】
文字列の任意の位置から 一部の文字列を取得する【Mid関数】【MidB関数】【ExcelVBA】
コメント