Заменить проблему
Вы нигде не сказали этого явно, но я предполагаю, что вы использовали свой код:
With Thisworkbook.Sheets("Sheet1")
If .Range("A2").Value = "Sales" Then
.Range("A2").Replace "Sales", "Sales?"
End If
End With
, и в результате он заменил, например, Sales Operations
с Sales? Operations
, которого вы не хотели бы иметь.
Метод Replace
имеет 8 аргументов, в то время как вы использовали только очевидные первые два:
What
и Replacement
Причиной вашего горя было то, что из-за последней выполненной вами операции Find
или Replace
третий аргумент LookAt
был установлен на xlPart
, что означает, что он найдет или заменит любоевхождение в ячейку, содержащую ваш параметр What
, «Продажи».Это легко исправить, изменив вашу строку на:
.Range("A2").Replace "Sales", "Sales?", xlWhole
Теперь, подобно LookAt
, есть еще два важных аргумента, которые сохраняются каждый раз, когда выполняется замена или поиск :
SearchDirection
и MatchCase
, которые также лучше всего устанавливать каждый раз при выполнении Replace
или Find
.
Вам следует тщательно изучить эти два методапотому что они не так просты, как можно подумать.