LeftB関数:文字列の左から指定のバイト数分だけ文字列を取得する

LeftB 関数は Excel VBA で用意されている関数の一つで、対象の文字列の左端から指定したバイト数分だけ部分文字列を取得します。ここでは Excel VBA における LeftB 関数の使い方について解説します。

※ バイト数ではなく文字数で指定する場合は Left 関数を使用します。 Left 関数については「Left関数:文字列の左から指定の文字数分だけ文字列を取得する」を参照されてください。

(Last modified: )

LeftB関数の定義と使い方

LeftB 関数は対象の文字列の左端から指定のバイト数分の文字列を返します。

LeftB(string,length)

1 番目の引数に対象となる文字列を指定します。 2 番目の引数に取得するバイト数を数値で指定します。

次の例を見てください。

Debug.Print LeftB("FLOWER",2)  'F
Debug.Print LeftB("東京都",2)  '東

1 番目に指定した文字列の左端からそれぞれ 2 バイト分の部分文字列を取得しイミディエイトウィンドウに表示します。注意点として Shift_JIS ではないので全角文字が 2 バイトで半角文字が 1 バイトではなく、全角文字であっても半角文字であっても 1 文字は 2 バイトである点です。そのため 2 バイト分取得するとどちらも 1 文字だけ取得します。

半角文字を1バイト、全角文字を2バイトとして取得したい場合

全角文字なら 2 バイト、半角文字なら 1 バイトとして文字を取得したい場合は StrConv 関数を使って次のように記述します。(Windows 環境のみ)。

StrConv(LeftB(StrConv("FLOWER",vbFromUnicode),2),vbUnicode)
StrConv(LeftB(StrConv("東京都",vbFromUnicode),2),vbUnicode)

StrConv 関数で対象の文字列を Unicode から Shift_JIS へ変換したあとで指定のバイト数分文字列を取得し、そのあとで再度 StrConv 関数を使って Shift_JIS から Unicode へ戻しています。

"FLOWER" については 2 バイト分として "FL" を取得し、 "東京都" については 2 バイト分として "東" を取得します。

StrConv 関数の詳しい使い方については「StrConv関数:文字列で大文字小文字や全角半角の変換などを行う」を参照されてください。

サンプルコード

それでは簡単なサンプルを作成して試してみます。

Option Explicit

Sub LeftB関数()
    Dim i As Integer

    For i = 3 To 6
        Cells(i, 3).Value = LeftB(Cells(i, 2).Value, 4)
    Next i
End Sub

LeftB関数の定義と使い方(1)

このプログラムを実行すると LeftB 関数を使って B3 セルから B6 セルに入力されている文字列の左端から 4 バイトだけ部分文字列を取得し、取得した文字列を C3 セルから C6 セルにそれぞれ代入します。 LeftB 関数をそのまま使用した場合、全角文字であっても半角文字であっても 1 文字は 2 バイトとなります。

LeftB関数の定義と使い方(2)

サンプルコード

もう一つサンプルを作成して試してみます。今度は全角文字が 2 バイト、半角文字が 1 バイトとして計算されるように変更したものです。

Option Explicit

Sub LeftB関数()
    Dim i As Integer

    For i = 3 To 6
        Cells(i, 3).Value = StrConv(LeftB(StrConv(Cells(i, 2).Value, vbFromUnicode),4),vbUnicode)
    Next i
End Sub

LeftB関数の定義と使い方(3)

このプログラムを実行すると LeftB 関数を使って B3 セルから B6 セルに入力されている文字列の左端から 4 バイトだけ部分文字列を取得し、取得した文字列を C3 セルから C6 セルにそれぞれ代入します。このとき全角文字は 1 文字が 2 バイト、半角文字は 1 文字が 1 バイトとして計算されます。

LeftB関数の定義と使い方(4)

-- --

Excel VBA における LeftB 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。