Exit Sub
полностью выходит из области действия процедуры.
Вы не хотите этого - вы хотите выйти из внутреннего цикла, но продолжайте итерацию для выполнения следующего поиска.
Exit For
сделает это.
If rFind Is Nothing Then
MsgBox ("There is no " & strSearch)
Exit For
Не ясно, каковы ваши условия, но звучит так, как будто вы также хотите Exit For
, когда у вас do есть совпадение.Теперь, если вы выйдете из цикла независимо от того, нашли ли вы то, что искали, пересмотрите, нужен ли вам внутренний цикл вообще.
Или найдите каждую строку поиска для каждого значенияx вместо поиска каждого значения x для каждой строки поиска, , как предложил Скотт ("перевернуть петли"):
For x = 38 To 100 Step 3
For Each strng In strings
Set rFind = Range.Find...
If Not rFind Is Nothing Then
...paste special...
Else
...msgbox
End If
Next
Next
Используйте Exit For
для выхода из циклаbody и Exit Sub
для полного выхода из процедуры.