If you are interested, here is another approach that uses a single expression:
Dim example As String
example = "11years3months2weeks4days"
Dim re As New RegExp
re.Pattern = "^\s*((\d+)\s*(year|years|yrs|y))?\s*((\d+)\s*(month|months|mths|m))?\s*((\d+)\s*(week|weeks|w))?\s*((\d+)\s*(day|days|d))?\s*$"
re.IgnoreCase = True
Dim mc As MatchCollection
Set mc = re.Execute(example)
If mc.Count = 0 Then
MsgBox "Input not recognised"
Else
Dim f As Match
Set f = mc(0)
Dim y As Integer
Dim m As Integer
Dim w As Integer
Dim d As Integer
y = CInt(Val(f.SubMatches(1)))
m = CInt(Val(f.SubMatches(4)))
w = CInt(Val(f.SubMatches(7)))
d = CInt(Val(f.SubMatches(10)))
MsgBox "Years: " & y & ", month: " & m & ", weeks: " & w & ", days: " & d
End If
Adjust the pattern if you find more forms of inputs.