VBA:文字列の正規表現(1)パターンに一致するか否かを評価する方法
VBAの処理でユーザが入力した値が入力規則と異なる場合や、データベースの型と違う場合など、入力パターンがあっているかどうかのチェックをしたい場合があります。
以下の方法で正規表現のチェックができるので、その方法を説明します。
※このオブジェクトを利用するには事前の準備が必要です。設定されていない可能性もあるので、ページの一番下の関連記事にある「事前準備(参照設定の設定)」を事前に確認してください。
(1)パターンにマッチするか否かを評価する方法
以下を実行すると、入力値がパターン(Check_Pattern)に一致しているかどうかのチェックができます。
ここでは「郵便番号(例:100-0001)」の規則で入力された場合に「True」が返ります。もし漢字や値が多い場合や、少ない場合には規則と異なるので「False」が返ります。
なお下記の「\d」は[0-9]と等価で、任意の数字を正規表現とし、次の「{}」(中かっこ・ブレイス)の中で桁数を指定しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
'例:郵便番号(100-0001)などのチェック(ハイフンもあり)' '「\d」は[0-9]と等価で任意の数字です。次の「中かっこ(ブレイス)」の中は桁数(繰り返しの出現回数)です。' Private Const Check_Pattern = "\d{3}-\d{4}" '**********************************************' Private Sub チェック() Dim chkStr As String chkStr = "101-1111" 'chkStr = Worksheets("Sheet1").Range("D3").Value ''←セルに入れた値の場合' If chkRegExp(chkStr) Then MsgBox "True" Else MsgBox "False:入力値に誤りあり" End If End Sub '**********************************************' '判定用:Functionにしておけば使い回しができます' Function chkRegExp(chkStr As String) Dim re As New RegExp re.pattern = Check_Pattern re.Global = True chkRegExp = re.Test(chkStr) End Function |
◆関連記事
VBA:文字列の正規表現「RegExpオブジェクト」利用の事前準備
【VBA】文字列の正規表現「RegExpオブジェクト」利用の事前準備。参照設定の「Microsoft VBScript Regular Expressions 5.5」の設定方法
VBA:文字列の正規表現(3)指定した位置の数字、文字を変換・削除。「RegExp」の「Replace」利用
【VBA】文字列の正規表現(3)指定した位置の数字、文字を変換・削除。「RegExp」の「Replace」利用。
VBA:文字列の正規表現(2)指定した範囲の数字、文字を全て変換・削除。「RegExp」の「Replace」利用
【VBA】文字列の正規表現(2)指定した範囲の数字、文字を全て変換・削除。「RegExp」の「Replace」。指定した範囲の数字・文字をまとめて変換・削除ができます。