Excel VBAの「Len関数」について解説します。
Len関数とは
Excel VBA の Len関数は、文字列の文字数 または 変数の格納に必要なバイト数を含む長整数型 (Long) の値を返します。
※ LenB関数は、文字列のバイト数を返します。
Len 関数(Visual Basic for Applications リファレンス)
構文(引数と戻り値)
Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。
構文
Len(string | varname)
string または varname のどちらか一つを指定します。
引数
引数 | 説明 |
---|---|
string | 調査対象の文字列(式)を指定します |
varname | 調査対象の変数名を指定します |
戻り値
引数 | 説明 |
---|---|
string | 指定した文字列の文字数を返します |
varname | 変数が文字列型 (String) なら 文字数 を返します バリアント型 (Variant) も 文字列型 (String) として処理します それ以外のデータ型の場合は、変数のバイト数を返します |
ユーザー定義型を使用すると、Len関数は ファイルに書き込まれるデータのサイズを返します。ただし、次のような注意点があるようです。
解説(使用例)
では、簡単なサンプルコードを作成して使用例を解説していきます。
Len 関数 サンプル
引数 string に指定した文字列による戻り値をイミディエイトウインドウで見る簡単なコードです。
実行結果のイミディエイトがこちらです。

3番目の例では、引数の string を空白にした結果 0 が返ってきていることが確認できます。
4番目はLen関数、5番目がLenB関数で同じ引数の文字列 “ABC” にしています。
結果は、Len関数は文字数の「3」が返り、LenB関数ではバイト数「6」が返っています。
※ 1文字2バイトなので3文字は6バイト
Application.InputBoxを使った例
次は、Application.InputBox でセルデータの文字数も調べることができるサンプルです。
文字列「あいうえお」を入力した画像です。

結果のメッセージボックス画像がこちらです。

次に、文字数を調べたいセルを選択して取得する例です。セルを選択している画像がこちらです。

結果のメッセージボックス画像のとおり、セルに入力されたデータの文字数が取得できました。

varname がユーザー定義型の例
ユーザー定義型の場合、次のような注意点を記載しましたが、その例を確認してみたいと思います。
Len 関数(Visual Basic for Applications リファレンス)内のサンプルコードを一部流用して確認してみます。
String型が固定長の場合
・15行目 MyLen = Len(Customer) でユーザー定義型の保存に必要なバイト数 42 を取得しています。
・20行目 MyLen = Len(.ID) + Len(.Name) + Len(.Address) でメンバーのデータ型を合計しています。
Integer型(2バイト)+固定長文字列(10+30)= 42 と同一の値でした。
・String型を固定長で指定した場合、差異はなく特に問題はありません。
String型が可変長の場合
・6行目を Address As String に変更して可変長文字列として実行してみます。
・15行目 MyLen = Len(Customer) は 20 に変わりました。
・20行目 MyLen = Len(.ID) + Len(.Name) + Len(.Address) でメンバーのデータ型を合計してみます。
Integer型(2バイト)+ 固定長文字列(10)+ 可変長文字列(0)= 12 です。
・リファレンスによると、String型の記憶領域サイズは次の表のとおりとなっています。
データ型 | 記憶域サイズ | 範囲 |
---|---|---|
String (可変長) | 10 バイト + 文字列の長さ | 0 〜 約 20 億 |
String (固定長) | 文字列の長さ | 1 〜 約 65,400 |
・String型(可変長) の 記憶領域サイズが「10 バイト + 文字列の長さ」ならば 22 になるはずですが?
・メンバーに可変長文字列がある場合 Len(Customer) の値が明らかにおかしいですね。
まあ、あまりこのような事例を使うことはないと思いますが(^^;)
データ型のバイト数取得サンプル(参考)
先ほどのユーザー定義型の例を使って、メンバーに各種データ型を入れて表示させてみます。
実行結果のイミディエイト画像がこちらです。

おわりに
VBAの関数一覧はこちらです。
VBAサンプルファイルダウンロードページのご案内
このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。
ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!
Excel VBA「Len 関数」についての解説でした。
Len 関数は、文字列の処理や制御を行う際に役立ちます。
実務で良く利用されるのは、Len 関数で取得した文字列の文字数をループ処理のEnd値として利用するケースです。対象文字列に対して1文字づつ処理を行う場合です。
For i = 1 To Len(tgtStr)
~ tgtStrに対して1文字づつなんらかの処理を行う ~
Next i
このほかにも、いろいろな場面で利用されていますので、しっかり使い方を覚えておきましょう。↓ サイト内で Len 関数を使っている記事を検索できます↓
以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;