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 数字にマッチする
| 複数の文字列を一つの正規表現にまとめ、いずれかにマッチする。
$ 文字列の末尾にマッチする
$ 文字列の末尾にマッチする