こんにちは、ユーキです。
今回は、VBAで文字列の長さを調べる関数(Len)を紹介します。
目次
文字列の長さを調べる
文字列の長さを調べるには、Len関数を使用します。
Len関数の使い方
使い方は簡単です。調べたい文字列を引数に指定するだけになります。
Dim num As Integer
num = Len("Hello世界!")
Debug.Print num ’8が出力されます
アルファベットも記号も漢字も1文字を1とカウントします。「Hello世界!」だと8文字となるので、戻り値は8が返ります。
バイト数で数える(LenB関数)
文字数ではなく、バイト数をカウントしたい場合は、LenB関数を使用します、と言いたいところなのですが、日本語の場合、このままでは使えません。
Dim num As Integer
num = LenB("Hello世界!")
Debug.Print num ’16が出力されます
上記の場合、16が出力されます。日本語の場合、1文字2バイトをみなされてしまうようです。
Microsoftサポートにその記述がありました。
では、バイト数を求めたい場合はどのように書いたらよいでしょうか?
Dim num As Integer
num = LenB(StrConv("Hello世界!", vbFromUnicode))
Debug.Print num ’11が出力されます
上記のように、StrConv関数を使用して、文字列を Unicode からシステムの既定のコード ページに変換してします。こうすることで、正しくバイト数が求めらるようです。これで、正しく11が求められるようになりました。…昔はこうじゃなかった気がするけれど…勘違いかもしれません。何事も確認が大事ですね。
まとめ
今回は、文字列の長さを調べる関数(Len)を紹介しました。
Point
- 文字数の取得はLen関数を使用する
- 文字列のバイト数を取得したい場合は、StrConv+LenB関数を使用する
少しでもお役に立てば、幸いです。