文字数取得の基本とエラー対策【Len関数】
今回の目標
「この文字列は何文字か取得できれば色々できるのに‥」と思ったあなたへ。
この記事では、Len関数の使い方からエラーの対処方法まで、まとめて丁寧に解説します!
基本的なだけでなく、実務で使える5つの具体例つきです。
目標リスト
- 文字列の末尾から、数文字を抽出できるようになる
- Right関数の処理速度を早くする方法を知る
- Right関数で発生するエラーと対処方法を知る
説明
Len関数とは?
Len関数は、文字列の文字数を返します。
例えば、「1234567」なら「7」を、「ABCDEFGH」なら「8」を返します。
特殊なケースですが、「Null」の場合は、Nullが返ります。
Len関数の構文と引数一覧
Len関数の構文と引数一覧です。
Len関数の構文
Len(string)
Len関数の引数一覧
引数 | 省略 | 説明 |
---|---|---|
string | 不可 | 文字列を返す元となる文字列。 |
一部、Microsoft社のリファレンス【Len関数】を参照しています。
【Microsoft公式】
Len 関数 (Visual Basic for Applications) | Microsoft Lear
使用サンプル
1.文字列が何文字か表示する
本ページの主役「Len関数」を使用します。
Sub SampleLen1()
'4 と表示される
MsgBox Len("ABCD")
End Sub
2.入力された文字が何文字か表示する
ユーザーが文字を入力できる「InputBox」を使用します。
実務ではセルの値を取得するか専用フォームに入力するようにしてください。
Sub SampleLen2()
Dim str As String
str = InputBox("文字を入力してください")
'入力した文字数を表示する。
MsgBox Len(str) & " 文字 入力されました。"
End Sub
3.郵便番号の入力形式に問題がないかチェックする
郵便番号の上3桁と下4桁を分ける "-" を削除するため、Replace関数を使用します。
Sub SampleLen3()
Dim zipCode As String '郵便番号
Dim buf As String
Dim digit As Long
zipCode = "012-3456"
'桁数計算時に、"-" は不要なため、削除する。
buf = Replace(zipCode, "-", "")
'郵便番号の桁数を取得する
digit = Len(buf)
'郵便番号の桁数を確認
If digit <> 7 Then
MsgBox "郵便番号は7桁で入力して下さい。"
Else
MsgBox "郵便番号は【" & zipCode & "】です。"
End If
End Sub
4.電話番号から、固定電話か携帯電話か識別する
市外局番、市内局番、加入者番号を分ける "-" を削除するため、Replace関数を使用します。 原則、電話番号は、10桁なら固定電話、11桁なら携帯電話です。
Sub SampleLen4()
Dim telNumber As String
Dim digit As Long
telNumber = "00-1122-3344"
'桁数計算時に、"-" は不要なため、削除する。
telNumber = Replace(telNumber, "-", "")
'電話番号の桁数を取得する
digit = Len(telNumber)
'電話番号は10桁か11桁
If (digit = 10) Then
MsgBox "お使いの電話は固定電話です。"
ElseIf (digit = 11) Then
MsgBox "お使いの電話は携帯電話です。"
Else
MsgBox "桁数に過不足があります!"
End If
End Sub
5.不足桁を「末尾」にゼロを追加して固定桁に調整
通常、文字列の先頭をゼロ埋めしますが、ここでは『末尾』をゼロ埋めします。
0を指定回数、繰り返すため、WorksheetFunction.Reptを使用します。
WorksheetFunction.Rept は第一引数に繰り返す文字、第二引数に繰り返す回数を入力します。
Sub SampleLen5()
Dim digit As Long
Dim code As String
code = "123"
digit = Len(code)
'WorksheetFunction.Rept ←文字を指定回数、繰り返す
code = code & WorksheetFunction.Rept("0", 7 - digit)
'1230000 と表示される。
MsgBox code
End Sub
先頭をゼロ埋めする場合、format(123, "0000000") で『0000123』と表示されます。
引数がNullの場合
引数がNullの場合はNullを返します。
Variant型以外は、Nullを格納できず「実行時エラー94」が発生します。
Nullになりえる場合は受け取る変数の型をVariantにして、Nullが返ってきていないかチェックを行いましょう。
Sub SampleLenNull()
Dim val As Variant
val = Null
If Not IsNull(val) Then
MsgBox Len(val)
Else
MsgBox "valがNullです"
End If
End Sub