引数Stringで指定した文字列の左から、引数Lengthで指定した長さの文字列
を取得します。Left関数とLeftB関数の違いは、指定された文字の長さを文字数
で計算するか、バイト数で計算するかという点です。
構文 Left(String, Length)
LeftB(String, Length)
設定項目 内容
String 取り出し元となる文字列式を指定 [省略不可]
Length 取り出す文字列の長さを指定 [省略不可]
次のサンプルで、両者の違いを理解してください。
●サンプル1●
Sub LeftSamp1()
Dim myStr As String
'---元の文字列を指定
myStr = InputBox("あなたの名前を入力してください")
If myStr = "" Then Exit Sub
'---(1)
MsgBox "あなたの名前の左から2文字分は " & Left(myStr, 2)
'---(2)
MsgBox "あなたの名前の左から2バイト分は " & LeftB(myStr, 2)
End Sub
●補足●
漢字で「栗山恵吉」と入力したケースと、ローマ字で「Kuriyama Keikichi」
と入力したケースを考えてみてください。(1)と(2)の実行結果は、それぞれど
のようになるでしょうか?実行結果が予想と違っていた場合には、その先にある
解説をよく読んで覚えておいてください。
●ポイント●
文字列操作の関数のうち、末尾に「B」がつく関数に関しては文字列の長さを
計算する際にバイト数で計算します。なお、Excel97からはUnicode対応のアプリ
ケーションとなりました。よって、半角の文字であっても2バイト文字として扱
われます。しかし、ワークシート関数のLEFTB、RIGHTB、MIDB、LENB関数などに
おいては、半角文字であれば1バイトと計算します。両者を混同しないように気
をつけてください。
Excel95で動作させる可能性のあるマクロにおいても注意が必要です。Excel95
はUnicode対応のアプリケーションではないため、半角文字のバイト数は1で計算
します。動作に違いが現れる可能性のある文字列操作関数は、次のとおりです。
Asc、Chr、InputB、InStrB、LeftB、LenB、RightB、Midb
これらの関数を使う際には、対象の文字列をStrConv関数を利用し、データを
Unicodeに変換するようにしてください。
|