VBA Len関数 – 文字列の長さを取得する
In this Article
このチュートリアルでは、Len VBA関数を使用して、文字列の長さを取得する方法を説明します。
Len関数
VBAのLen関数は、指定された文字列の長さを返します。
VBA Len : 文字数をカウントする
VBAのLen関数は、文字列内の文字を数えます。
Sub LenExample_1()
MsgBox Len("12345") '--> 5
MsgBox Len("12") '--> 2
MsgBox Len("1") '--> 1
MsgBox Len(" ") '--> 1 (スペースが含まれている)
MsgBox Len("") '--> 0
MsgBox Len("AB Cd") '--> 5
End Sub
VBA Len : 文字列とバリアント
VBA Len関数は、文字列またはバリアントとして宣言された変数の文字数をカウントすることができます。実際、VBA Lenはバリアントを文字列として扱います。もしVBA Lenが整数、long、singleまたはdoubleで使われた場合、VBA Lenはその変数を格納するために必要なバイト数を数えます。
Sub LenExample_2()
Dim VarEx1 As String
VarEx1 = 12345
MsgBox Len(VarEx1) '--> 5
'Len は変数内の文字数をカウント
Dim VarEx2 As Variant
VarEx2 = 12345
MsgBox Len(VarEx2) '--> 5
'Lenは変数の文字数をカウント
Dim VarEx3 As Integer
VarEx3 = 12345
MsgBox Len(VarEx3) '--> 2
'Lenは変数の格納に使用されるバイト数をカウント
Dim VarEx4 As Long
VarEx4 = 12345
MsgBox Len(VarEx4) '--> 2
'Lenは変数の格納に使用されるバイト数をカウント
Dim VarEx5 As Single
VarEx5 = 12345
MsgBox Len(VarEx5) '--> 2
'Lenは変数の格納に使用されるバイト数をカウント
Dim VarEx6 As Double
VarEx6 = 12345
MsgBox Len(VarEx6) '--> 2
'Lenは変数の格納に使用されるバイト数をカウント
End Sub
VBA Len : 文字の出現回数を数える
VBA Len関数は、VBA Replace関数と一緒に使って、文字列の中にある文字が何回現れるかを数えることができます。 VBA Replace関数は、文字列中のある部分文字列を別の部分文字列に置き換えることができます。
MsgBox Replace("XB cX", "X", "7") '--> "7B c7"
Replaceを使ってカウントしたい文字を削除し、置換前と置換後の長さの差を求めることができるのです。
Sub LenExample_3()
Dim StrEx As String '文字列変数を定義する
StrEx = "Jack,John,Jim,Jordan"
MsgBox Len(StrEx) - Len(Replace(StrEx, ",", "")) '--> 3
'上記のコードを分解する
MsgBox Len(StrEx) '--> 20
MsgBox Replace(StrEx, ",", "") '--> "JackJohnJimJordan"
MsgBox Len(Replace(StrEx, ",", "")) '--> 17
MsgBox Len(StrEx) - Len(Replace(StrEx, ",", "")) '--> 20-17=3
End Sub
VBA Len 部分文字列の出現回数を数える
VBA Len関数は、VBA Replace関数と一緒に使うことで、文字列の中にある部分文字列が何回出てきたかをカウントすることができます。前回と同様、 VBA Replace関数を使います。
MsgBox Replace("XB cX", "X", "7") 'Result is:"7B c7"
同様に、Replaceを使ってカウントしたい部分文字列を削除し、置換前と置換後の長さの差を求めることができますが、最後に、その差分を置換した部分文字列の長さで割る必要があります。
Sub LenExample_4()
Dim StrEx As String '文字列変数を定義する
StrEx = "Jack, John, Jim, Jordan"
Dim SubStr As String '部分文字列用変数の定義
SubStr = ", "
'StrExの中にSubStrが何回あるか調べる
MsgBox (Len(StrEx) - Len(Replace(StrEx, SubStr, "")))/ Len(SubStr) '--> 3
'上記のコードを分解する
MsgBox Len(StrEx) '--> 23
MsgBox Replace(StrEx, SubStr, "") '--> "JackJohnJimJordan"
MsgBox Len(Replace(StrEx, SubStr, "")) '--> 17
MsgBox Len(StrEx) - Len(Replace(StrEx, SubStr, "")) '--> 23-17=6
MsgBox (Len(StrEx) - Len(Replace(StrEx、SubStr、""))) / Len(SubStr)
'--> (23-17)/2=3
End Sub