Excel VBAで正規表現

'--------------------------------------------------
'RegexMatch関数
'--------------------------------------------------
'参照設定: Microsoft VBScript Regular Expressions
'
'引数--------------------------------------------------
'Str: チェックする文字列
'Pattern: チェックに使用する正規表現
'IgnoreCase: Trueなら大文字小文字を区別しない
'            Falseなら大文字小文字を区別する
'
'戻り値--------------------------------------------------
'Boolean: 正規表現に文字列がマッチしているならTrue
'         マッチしなければFlase
'         引数に問題があればFalse
'--------------------------------------------------
Public Function RegexMatch(Str As String, Pattern As String, IgnoreCase As Boolean)

On Error GoTo ERRHANDLER
    '正規表現
    Dim regex As RegExp
    Set regex = New RegExp
    
    '引数チェック
    If IsNull(Pattern) Then
        RegexMatch = False
        Exit Function
    ElseIf IsNull(Value) Then
        RegexMatch = False
        Exit Function
    ElseIf IsNull(IgnoreCase) Then
        RegexMatch = False
        Exit Function
    End If
    
    '正規表現オブジェクトにパターンをセット
    regex.Pattern = Pattern
    regex.IgnoreCase = IgnoreCase '大文字小文字の区別フラグ
    '実行
    'regex.Testメソッドで正規表現にマッチしたらTrueを返す
    If (regex.Test(Str)) Then
        RegexMatch = True
    Else
        RegexMatch = False
    End If
    
    Exit Function
    
ERRHANDLER:
    If Err.Number = 5017 Then
        ret = MsgBox("不正な正規表現です" & vbCrLf & "メタ文字がエスケープされていません。", vbOKOnly, "Error:" & Err.Number)
        'ex. \
        'ex. aa)
    ElseIf Err.Number = 5018 Then
        ret = MsgBox("不正な正規表現です" & vbCrLf & "量指定子(*?+{})が不正です", vbOKOnly, "Error:" & Err.Number)
        'ex. ?
    ElseIf Err.Number = 5019 Then
        ret = MsgBox("不正な正規表現です" & vbCrLf & "[]が正しく入力されていません", vbOKOnly, "Error:" & Err.Number)
        'ex. [a-z
    ElseIf Err.Number = 5020 Then
        ret = MsgBox("不正な正規表現です" & vbCrLf & "()が正しく入力されていません", vbOKOnly, "Error:" & Err.Number)
        'ex. (a
    ElseIf Err.Number = 5021 Then
        ret = MsgBox("不正な正規表現です" & vbCrLf & "[]内の文字クラスが不正です", vbOKOnly, "Error:" & Err.Number)
        'ex. [a-Z]
    ElseIf Err.Number = 5022 Then
        ret = MsgBox("不正な正規表現です", vbOKOnly, "Error:" & Err.Number)
        'ex.
    Else
        MsgBox (Err.Number & Err.Description)
    End If
    RegexMatch = False
    Exit Function
End Function

使い方

yyyymmdd = "2010/10/11"
if RegexMatch(yyyymmdd, "^[0-9]{4}/[0-9]{2}/[0-9]{2}$", True) = True Then
    ret = MsgBox("日付形式にマッチ", vbOkOnly)
End If

多分動くと思う(´・ω・`)