文字数取得の基本とエラー対策【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

関連リンク

ページの先頭へ