即効テクニック |
引数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に変換するようにしてください。