0

我正在尝试使用以下代码更改范围之间的一些值:

Sub selection()

    Dim rng3 As Range
    Dim fnd As Variant
    Dim rplc As Variant
    Dim fx As Variant
    fnd = 7
    rplc = "007"
    fx = 167
    
    
    Set rng3 = Range(Range("K2"), Range("K2").End(xlDown))
    rng3.TextToColumns
    If rng3.Value = fnd Then
    rng3.Replace what:=fnd, replacement:=rplc, SearchOrder:=xlByColumns, _
    MatchCase:=False
    ElseIf rng3.Value = fx Then
    End If

End Sub

我正在寻找 rng3 中的值 7,但我意识到那里出现了 167 之类的值,所以使用该方法rng3.Replace what:=fnd, replacement:=rplc它也会改变这个值,所以我得到了一个 if 条件,所以当rng3.Value = fnd去替换时,elseif rng3.Value = fx什么也不做。有了这个,它给了我一个错误 13 types don't match,所以我猜是因为我把 rng3 作为一个范围,它不允许 if 条件。有什么帮助我可以用什么来解决这个问题?

4

1 回答 1

1

为每个循环找到了解决方案。我们添加另一个变量,dim r as Range然后我们使用它:

For Each r In rng3
    If r.Value = fnd Then
        r.Value = rplc
    ElseIf r.Value = fx Then
    End If
Next r

我们去替换找到的7,167不会改变。

于 2020-08-13T22:47:45.307 回答