0

如何使用vba函数将替换功能从一种模式的替换扩展为几种模式?

期望的结果是:代替substitute(cell,pattern,replacement,instancenumber),是否可以定义像sub2(cell,pat1,replacement 1,pat2,replacement 2,pat3,replacement 3,...)这样的函数?

谢谢。

4

1 回答 1

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"
于 2014-12-01T16:41:38.557 回答