VBAのLen関数について解説しています。
Len関数は、VBA関数の中で文字列操作関数に分類される関数です。
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 関数を使って、文字列の文字数、または変数の保存に必要なバイト数を返します。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全般について分からない事があればこちらの掲示板よりご質問ください。
VBAのIE操作入門↑ExcelのVBAをマスターできたら、エクセルVBAのIE操作にも挑戦してみてください。
こちらでは、エクセルVBAの事例で利用したステートメントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのプロパティをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのメソッドをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのイベントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。