Public Function WildReplace(ByVal expr As String, ByVal find As String, _
ByVal Rep As String, Optional ByVal delimiter As String = " ") As String
'Эта функция применима в том частном случае, когда строка - источник,
заданная аргументом Expr
'представляет совокупность элементов, отделяемых разделителями.
'Типичный пример - строка представляет совокупность слов, разделенных
пробелами.
'Как и обычная функция Replace эта функция производит замену вхождений
элемента (подстроки) новым значением
'Отличие от стандартной функции состоит в том, что заменяемый элемент
(подстрока) find
'задается шаблоном. В результате разные элементы могут быть заменены на
новое значение.
'Для этого частного случая WildReplace существенно расширяет стандартные
возможности Replace
'Алгоритм основан на том факте, что строка допускает разбор ее на элементы,
'а к элементам применима операция Like - сравнения с шаблоном.
Dim Words() As String, i As Long, Res As String
'Разбор строки на элементы
Words = Split(expr, delimiter)
'Сравнение элементов с шаблоном и замена в случае совпадения
For i = LBound(Words) To UBound(Words)
If Words(i) Like find Then Words(i) = Rep
Next i
'Сборка строки
Res = Join(Words, delimiter)
WildReplace = Res
End Function