Комфорт и автоматизация

.Test

Иногда не нужно получать коллекцию подстрок соответствующих регулярному выражению, а просто требуется найти простой ответ на вопрос — встречаются ли в строке хотя бы одна подстрока, удовлетворяющая шаблону или нет?

'Встречаются ли в строке совпадения для регулярного выражения?
Public Function RegExpTest(str As String, _
                            Pattern As String, _
                            Optional IgnoreCase As Boolean = False, _
                            Optional Multiline As Boolean = False) _
                      As Boolean

    RegExpTest = False 'Пока ничего не нашли
    
    If Not str Like "" And Not Pattern Like "" Then
    
        Dim RegExp As Object 'Регулярка хранится в объекте
        
        Set RegExp = CreateObject("VBScript.RegExp")
        With RegExp
            .IgnoreCase = IgnoreCase 'Регистр неважен?            
            .Multiline = Multiline 'Игнорировать переносы строк?
            .Pattern = Pattern 'Регулярное выражение
        End With
        
        On Error Resume Next
        RegExpTest = RegExp.Test(str) 'Так встречается или нет?
        
        Set RegExp = Nothing 'Очистка памяти
    
    End If
    
End Function

Пример использования в проекте VBA:

    Dim strTest As String 'Тестируемая строка
    Dim strPattern As String 'Регулярное выражение
    
    strTest = "А Роза упала на лапу Азора!"
    
    strPattern = "о.*?a"
    MsgBox RegExpTest(strTest, strPattern) 'True, "о.*?a" -> "оза", "ора"
    
    strPattern = "\d"
    MsgBox RegExpTest(strTest, strPattern) 'False, цифр нет

Для тестирования в VBA регулярных выражений можно воспользоваться excel-приложением RegExp_Tester.

И да, Вы сможете пользоваться этой функцией только в том случае, если подключите в редакторе VBE DLL для работы с регулярными выражениями.