Воспользуйтесь следующей функцией, пожалуйста. Если за всеми существующими строками «Monster» следуют разные числа, это число не имеет значения. Достаточно посчитать Monster
.
Function CountMonsters(FullString As String, strMonster As String) As Long
CountMonsters = UBound(Split(FullString, strMonster))
End Function
Его можно вызвать следующим образом:
Sub testFindMonsters()
Dim strMonsterEssay As String
strMonsterEssay = "Monster 1 and Monster 2 goes to school. Monster 3 is waitting for the first two..."
MsgBox "There are " & CountMonsters(strMonsterEssay, "Monster") & " Monsters."
End Sub
Если необходимо вернуть «наибольшее число монстра», та же функция будет называться таким образом:
Sub testMaxMonsterNumber()
Dim MonsterNum As Long, strMonsterEssay As String, maxNo As Long, i As Long
Dim strHowManyMonsters As String
strMonsterEssay = "Monster 1 and Monster 2 goes to school. Monster 3 is waiting for the first two. However, Monster 1 and Monster 2 saw Monster 3 waiting and went a different way. Monster 3 waited for a long time for Monster 1 and Monster 2 but they never showed up"
For i = 99 To 1 Step -1
If CountMonsters(strMonsterEssay, "Monster " & i) > 0 Then
maxNo = i: Exit For
End If
Next
If maxNo > 0 Then
MsgBox "There are " & maxNo & " Monsters."
Else
MsgBox "There are no Monsters."
End If
End Sub
Но если «Монстр 32 ждет первых двух», он вернет 32. Я спросил вас о «правиле» последовательных номеров монстров, но вы ничего не сказали ...