Len関数

Len関数は、VBA関数の中で文字列操作関数に分類される関数です。

目次

スポンサー リンク

Len関数とは

Len関数は、指定した文字列の文字数または指定した変数に必要なバイト数を表す長整数型 (Long) の値を返します。

構文Len(string | varname)
引数省略説明
string ×任意の文字列式を指定します。引数 string に Null 値が含まれている場合は、Null 値を返します。
Varname 任意の変数の名前を指定します。引数 varname に Null 値が含まれている場合は、Null 値を返します。引数 varname がバリアント型 (Variant) であれば、Len 関数はその変数を文字列型 (String) として処理し、常にその文字数を返します。

指定可能な 2 つの引数のうち、いずれか 1 つだけを指定します。Len 関数にユーザー定義型の変数を指定すると、ファイルに書き込まれるデータのサイズを返します。
文字列をバイト データとして扱う場合は、LenB 関数を使用します。LenB 関数は、指定した文字列のバイト数を返します。LenB 関数にユーザー定義型の変数を指定すると、メモリ内でのサイズを返します。この値には要素間の埋め込みも含まれています (ただし、Windows の VBA と Mac のVBA とでは返す値が異なる場合があります)。
LenB 関数のコード例は、Len 関数の使用例を参照してください。
データ型がユーザー定義型の可変長文字列を Len 関数に指定すると、必要な格納領域の実際のバイト数を判断できないことがあります。

Len関数のサンプルコード

次の例は、Len 関数を使って、文字列の文字数、または変数の保存に必要なバイト数を返します。CustomerRecord を定義する Type...End Type ブロックをクラス モジュール内で記述する場合、このブロックの直前にキーワード Private を付ける必要があります。標準モジュールでは、Type ステートメントでパブリックなユーザー定義型を定義できます。


Sub sample()

 Type CustomerRecord                ' ユーザー定義型を定義します。
     ID As Integer                    ' この定義は標準モジュール内に記述します。
     Name As String * 10
     Address As String * 30
 End Type

 Dim Customer As CustomerRecord        ' 変数を宣言します。
 Dim MyInt As Integer, MyCur As Currency
 Dim MyString, MyLen
 MyString = "Hello World"            ' 変数を初期化します。
 MyLen = Len(MyInt)                ' 2 を返します。
 MyLen = Len(Customer)            ' 42 を返します。
 MyLen = Len(MyString)            ' 11 を返します。
 MyLen = Len(MyCur)                ' 8 を返します。

End Sub

次の例では、LenB 関数とユーザー定義関数 LenMbcs を使用して、指定した文字列のバイト数を返します。32 ビット Windows 用の VBA を使用する場合と、Macintosh用の VBA を使用する場合とでは、返される結果が異なる点に注意してください。



Function LenMbcs (ByVal str as String)
    LenMbcs = LenB(StrConv(str, vbFromUnicode))
End Function


Sub sample()

 Type CustomerRecord                ' ユーザー定義型を定義します。
     ID As Integer                    ' この定義は標準モジュール内に記述します。
     Name As String * 10
     Address As String * 30
 End Type

 Dim MyString, MyLen
 MyString = "ABc"
 ' "A" と "B" は全角文字で "c" は半角文字です。
 MyLen = Len(MyString)
 ' 文字数として 3 が返されます。
 MyLen = LenB(MyString)
 ' Windows の場合は 6、Macintosh の場合には 5 がバイト数として返されます。
 MyLen = LenMbcs(MyString)
 ' Windows の場合は 5 が返されます。Macintosh の場合は 
 ' Unicode がサポートされていないため、エラーが返されます。


End Sub

実行結果

解説

文字列操作関数一覧

関数名内容
Asc文字列内にある最初の文字の文字コードを返します。
AscB文字列内にある最初のバイトコードを返します。
AscW文字列内にあるISOコードの文字を返します。
Chr指定したコードに対応する文字を返します。
ChrB指定したコードに対応するバイトデータを返します。
ChrW指定したコードに対応するISOの文字を返します。
Format式を指定した書式に変換します。
Hex指定した文字列を16進数で返します。
InStr検索対象文字列の指定した位置から指定した文字列を検索し、最初に見つかった文字位置を返します。
InstrB検索対象文字列の指定したバイト位置から指定した文字列を検索し、最初に見つかったバイト位置を返します。
LCase大文字のアルファベットを小文字に変換します。
Left文字列の左端から指定した文字数分の文字列を抽出します。
LeftB文字列の左端から指定したバイト数分の文字列を抽出します。
Len文字列の文字数を返します。
LenB文字数のバイト数を返します。
Ltrim文字列の先頭のスペースを削除した文字列を抽出します。
Mid文字列の指定した位置から指定した文字数分を抽出します。
MidB文字列の指定したバイト位置から指定したバイト数分を抽出します。
Oct指定した文字列を8進数で返します。
Right文字列の右端から指定した文字数分の文字列を抽出します。
RightB文字列の右端から指定したバイト数分の文字列を抽出します。
Rtrim文字列の末尾のスペースを削除した文字列を抽出します。
Space指定した数のスペースを返します。
Str数式の値を文字列に返します。
StrComp文字列を比較した結果を返します。
StrConv文字列を変換した結果を返します。
String指定した文字コードに対応する文字を指定した文字数だけ並べた文字列を返します。
Trim文字列の先頭と末尾のスペースを削除した文字列を抽出します。
Ucase小文字のアルファベットを大文字に変換します。
Val文字列を数値に変換します。
ExcelのVBAについてのQ&A掲示板

↑ExcelのVBA全般について分からない事があればこちらの掲示板よりご質問ください^^

VBAのInternetExplorer操作入門

↑ExcelのVBAをマスターできたら、エクセルVBAのIE(InternetExplorer)操作にも挑戦してみてください^^

VBAのIE制御入門RSS

RSSフィードを登録すると最新記事を受け取ることができます。

VBAIE操作のスカイプレッスン

エクセルVBAのステートメント

こちらでは、エクセルVBAの事例で利用したステートメントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのオブジェクト

こちらでは、エクセルVBAの事例で利用したオブジェクトをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのプロパティ

こちらでは、エクセルVBAの事例で利用したオブジェクトのプロパティをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのメソッド

こちらでは、エクセルVBAの事例で利用したオブジェクトのメソッドをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

エクセルVBAのイベント

こちらでは、エクセルVBAの事例で利用したオブジェクトのイベントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。