RightB関数:文字列の右から指定のバイト数分だけ文字列を取得する
RightB 関数は Excel VBA で用意されている関数の一つで、対象の文字列の右端から指定したバイト数分だけ部分文字列を取得します。ここでは Excel VBA における RightB 関数の使い方について解説します。
※ バイト数ではなく文字数で指定する場合は Right 関数を使用します。 Right 関数については「Right関数:文字列の右から指定の文字数分だけ文字列を取得する」を参照されてください。
(Last modified: )
RightB関数の定義と使い方
RightB
関数は対象の文字列の右端から指定のバイト数分の文字列を返します。
1 番目の引数に対象となる文字列を指定します。 2 番目の引数に取得するバイト数を数値で指定します。
次の例を見てください。
Debug.Print RightB("FLOWER",2) 'R Debug.Print RightB("東京都",2) '都
1 番目に指定した文字列の右端からそれぞれ 2 バイト分の部分文字列を取得しイミディエイトウィンドウに表示します。注意点として Shift_JIS ではないので全角文字が 2 バイトで半角文字が 1 バイトではなく、全角文字であっても半角文字であっても 1 文字は 2 バイトである点です。そのため 2 バイト分取得するとどちらも 1 文字だけ取得します。
半角文字を1バイト、全角文字を2バイトとして取得したい場合
全角文字なら 2 バイト、半角文字なら 1 バイトとして文字を取得したい場合は StrConv
関数を使って次のように記述します。(Windows 環境のみ)。
StrConv(RightB(StrConv("FLOWER",vbFromUnicode),2),vbUnicode) StrConv(RightB(StrConv("東京都",vbFromUnicode),2),vbUnicode)
StrConv
関数で対象の文字列を Unicode から Shift_JIS へ変換したあとで指定のバイト数分文字列を取得し、そのあとで再度 StrConv
関数を使って Shift_JIS から Unicode へ戻しています。
"FLOWER" については 2 バイト分として "ER" を取得し、 "東京都" については 2 バイト分として "都" を取得します。
※ StrConv
関数の詳しい使い方については「StrConv関数:文字列で大文字小文字や全角半角の変換などを行う」を参照されてください。
それでは簡単なサンプルを作成して試してみます。
Option Explicit Sub RightB関数() Dim i As Integer For i = 3 To 6 Cells(i, 3).Value = RightB(Cells(i, 2).Value, 4) Next i End Sub
このプログラムを実行すると RightB
関数を使って B3 セルから B6 セルに入力されている文字列の右端から 4 バイトだけ部分文字列を取得し、取得した文字列を C3 セルから C6 セルにそれぞれ代入します。 RightB
関数をそのまま使用した場合、全角文字であっても半角文字であっても 1 文字は 2 バイトとなります。
もう一つサンプルを作成して試してみます。今度は全角文字が 2 バイト、半角文字が 1 バイトとして計算されるように変更したものです。
Option Explicit Sub RightB関数() Dim i As Integer For i = 3 To 6 Cells(i, 3).Value = StrConv(RightB(StrConv(Cells(i, 2).Value, vbFromUnicode),4),vbUnicode) Next i End Sub
このプログラムを実行すると RightB
関数を使って B3 セルから B6 セルに入力されている文字列の右端から 4 バイトだけ部分文字列を取得し、取得した文字列を C3 セルから C6 セルにそれぞれ代入します。このとき全角文字は 1 文字が 2 バイト、半角文字は 1 文字が 1 バイトとして計算されます。
-- --
Excel VBA における RightB 関数の使い方について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
プログラミングや開発環境構築の解説サイトを運営しています。