LenB、LeftB、RightB、MidB
これらは、通常通りにやるとまともな値が返ってこない。
例えば、LenとLenBで「ABCDE」の結果を見るために、下記のように処理してみると・・・。
Len("ABCDE")
LenB("ABCDE")
Lenは、「5」を返し、LenBは、「10」を返す。Lenは、文字数を返すので「5」で問題ないのだが、LenBは、バイト数なので、通常ならば、「5」を返すと考えられるのだが・・・・。
実は、Excelの内部では、Unicodeで処理されているため、全角も半角も2バイトとして処理されてしまう。そのため、全角2バイト、半角1バイトとはならない。
全角2バイト、半角1バイトとして処理したい場合には、StrConvを使って、文字コードを変換してから処理しないといけない。
つまり、LenBを使う場合は、下記のようにしないといけない。
LenB(StrConv("ABCDE", vbFromUnicode))
ちなみに、LenB以外でも、LeftB、RightB、MidBでも同じように処理しないといけない。