正規表現(Excel VBA)

Excel VBA で正規表現を使って、電話番号をチェックするプロシージャを作ってみた。

正規表現とは、簡単に言うと、指定した条件に一致する複数の文字列を一つのパターンで表現する方法。

F列(セル範囲F2:F22)で電話番号の表記に誤りがある場合、セルに背景色を付けるプロシージャを作成してみる。

<結果>

<概要>
Subプロシージャで、For Eachステートメントを使い、範囲内のセルの値を、関数「CheckTell」でパターンが一致するかどうか判断。正規表現(RegExp オブジェクト)のTestメソッドは、パターンに一致する場合「True」一致しない場合は「False」を返す。


Private Sub CheckTell_2()
    Dim myRange As Range
    For Each myRange In Range(“F2:F22”)
        If CheckTell(myRange.Value) = False Then
‘正規表現のパターンに一致しなかったら、セルの背景色を変更

            myRange.Interior.ColorIndex = 35
        End If
    Next myRange
End Sub


Private Function CheckTell(ByVal Tell As String) As Boolean
‘正規表現オブジェクト作成
    Dim re As Object
    Set re = CreateObject(“VBScript.RegExp”)
    With re
‘正規表現文字列パターン設定
 
       .Pattern = “^0(\d{1}-\d{4}|\d{2}-\d{3}|\d{3}-\d{2}|\d{4}-\d{1})-\d{4}$”
testメソッドでパターンに一致するかチェック
        CheckTell = .Test(Tell)
    End With
End Function


<パターンの意味>

”^0(\d{1}-\d{4}|\d{2}-\d{3}|\d{3}-\d{2}|\d{4}-\d{1})-\d{4}$”

<ここで使った正規表現 記号の意味>

^   文字列の先頭にマッチする

¥d 数字にマッチする

|  複数の文字列を一つの正規表現にまとめ、いずれかにマッチする。

$  文字列の末尾にマッチする

$  文字列の末尾にマッチする

よかったらシェアしてね!

この記事を書いた人

目次
閉じる