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でも同じように処理しないといけない。