Вот еще одна пользовательская функция, которая будет возвращать все цифры после определенной строки (префикс). В аргументах вы указываете строку для обработки и префикс для использования. Вы также можете указать, должен ли префикс быть чувствительным к регистру. По умолчанию он НЕ учитывает регистр, но это легко изменить.
UDF использует регулярные выражения для обработки текста. Сначала мы удаляем все, вплоть до префикса. Затем мы удаляем все не-цифры в остатке.
===================================
Option Explicit
Function DigitsAfter(sInput, sPrefix, Optional MatchCase As Boolean = False) As String
Dim re As Object
Dim S As String
Dim sPatPrefix As String
Const sPat As String = "\D"
'Intialize Regex engine
Set re = CreateObject("vbscript.regexp")
With re
.Global = True
.ignorecase = Not MatchCase
End With
'Generate the digit prefix
re.Pattern = "(.)"
sPatPrefix = ".*" & re.Replace(sPrefix, "\$1")
'Remove characters up to and including the prefix
re.Pattern = sPatPrefix
If re.test(sInput) = False Then
'Exit if prefix not in string
DigitsAfter = "Digit Prefix not in String"
Exit Function
'now remove all the non-digits that are left
Else
S = re.Replace(sInput, "")
re.Pattern = sPat
DigitsAfter = re.Replace(S, "")
End If
End Function
=====================================
Вот короткая процедура, показывающая, как ее можно использовать в большем макросе:
======================================
Option Explicit
Sub TestDigitFunction()
Const S As String = "abc12x97J*24AAA123"
MsgBox S & vbLf & DigitsAfter(S, "J*")
End Sub
======================================