Основы офисного программирования и язык VBA


Функция Replace - замена всех вхождений подстроки - часть 2


'Замена концов абзаца Selection.Range.Text = Replace(TxtRange, VBA.Chr(13), VBA.Chr(11))

End Sub

Несмотря на всю полезность функции Replace нам пришлось написать еще одну собственную модификацию этой функции. Дело в том, что у Replace есть одна особенность, на которую следует обратить внимание, - возвращаемый ею результат, начинается не с первой позиции, а с позиции, заданной аргументом Start. Так что помимо своей основной роли она еще обрубает голову строки, если только Start, отличается от 1. Поскольку замену зачастую нужно производить не с самого начала, а получать хочется полную строку, то мы написали свой вариант этой функции. Приведем его текст:

Public Function MyReplace(ByVal Expr As String, ByVal find As String, _ ByVal rep As String, Optional ByVal start As Long = 1, Optional ByVal count As Long = -1, _ Optional ByVal compare As VbCompareMethod = vbBinaryCompare) As String

'Вызов стандартной функции Replace If start = 1 Then MyReplace = replace(Expr, find, rep, start, count, compare) Else MyReplace = VBA.Left(Expr, start - 1) & replace(Expr, find, rep, start, count, compare) End If

End Function

Вот результаты нескольких вызовов Replace и MyReplace в окне отладки:

? Replace("A+B *(D*B +B)","B","C",4,1) *(D*C +B) ? MyReplace("A+B *(D*B +B)","B","C",4,1) A+B *(D*C +B) ? MyReplace("A+B *(D*B +B)","B","C",4) A+B *(D*C +C)




Начало  Назад  Вперед