Как определить цепочку замещающей функции в VBA
Как использовать функцию vba, чтобы расширить функцию замены от замены одного шаблона на несколько шаблонов?
Желаемый результат: вместо замены (ячейка, шаблон, замена, номер экземпляра) можно ли определить такую функцию, как sub2(ячейка, pat1, замена 1, pat2, замена 2, pat3, замена 3,...)?
Благодарю.
1 ответ
Вы можете сделать это используя ParamArrays
которые позволяют вам передавать столько аргументов, сколько захотите. Отсюда вы интерпретируете значения в массиве для выполнения пользовательской логики:
' patternReplacements are expected to have an even number of arguments.
' The even param (0, 2, etc) would be the search text and the odd (1, 3, etc) the respective replacement text.
Public Sub Substitute(ByVal cell As Range, ParamArray patternReplacements() As Variant)
Dim text As String
text = cell.Value
' Perform text replacements.
' Note - No logic here ensures an even number of arguments are passed, this could be easily added though.
Dim i As Integer
For i = 0 To UBound(patternReplacements) Step 2
text = Replace(text, patternReplacements(i), patternReplacements(i + 1))
Next
cell.Value = text
End Sub
Теперь, позвонив, будет выглядеть примерно так:
Substitute Range("A1"), "find1", "replace1", "find2", "replace2", "find3", "replace3"