W dzisiejszym odcinku pokażę gotową funkcję umożliwiającą wyłuskiwanie tekstu na podstawie wzorca RegExp. Funkcja ta jest niezwykle prosta, a zarazem niezwykle użyteczna, gdyż ma o wiele szersze możliwości niż standardowe rozwiązania obecne w VBA lub Excel-u.
Function RegExpString(sString As String, pattern As String, _
Optional iMath As Integer = 0, _
Optional bIgnoreCase As Boolean = True, _
Optional bGlobal As Boolean = True) As String
Dim oRegExp As Object
Dim oMatches As Object
On Error GoTo ERR_Handler:
If pattern = "" Then
RegExpString = ""
Exit Function
End If
If sString = "" Then
RegExpString = ""
Exit Function
End If
Set oRegExp = CreateObject("vbScript.RegExp")
With oRegExp
.IgnoreCase = bIgnoreCase
.Global = bGlobal
.pattern = pattern
Set oMatches = .Execute(sString)
End With
If oMatches.Count - 1 < iMath Then
RegExpString = ""
Exit Function
End If
RegExpString = oMatches(iMath).Value
END_Handler:
Set oRegExp = Nothing
Exit Function
ERR_Handler:
RegExpString = ""
Resume END_Handler:
End Function
Parametry funkcji to:
- sString - tekst w którym wyszukujemy
- pattern - Wzorzec wykorzystany do wyszukiwania
- iMath - numer przypisania w kolekcji ze wszystkimi pasującymi elementami. Może się okazać że mamy ich więcej niż jedno trafienie
- bIgnoreCase - Ignoruj wielkość liter
- bGlobal - badaj wszystkie możliwe kombinacje w ciągu
Przykład wykorzystania to np.:
Debug.Print RegExpString("ala ma psa, a kot to fafik","ala ma ?(kota|psa)")
Brak komentarzy:
Prześlij komentarz