Как определить цепочку замещающей функции в 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"
Другие вопросы по тегам