将字母替换为其他字母时出错

时间:2015-11-03 13:55:10

标签: string excel vba replace

为什么此代码无法正常运行?任务是仅在首先发生时从正确的位置替换(str。和strasse)。在测试它什么都不做。

我猜错误在这一行:x.Value = StrReverse(Replace(StrReverse(x.Value), strArr(b), "straße", 1, 1))其中是错误。

Sub strreplace()
Dim strArr As Variant
Dim b As Byte
Dim x As Range

strArr = Array("str.", "strasse", """")

For Each x In Selection.Cells
For b = 0 To UBound(strArr)
x.Value = StrReverse(Replace(StrReverse(x.Value), strArr(b), "straße", 1, 1))
Next b
Next x
End Sub

我测试的第二个代码是:

Sub strReplace()
Dim strArr As Variant
Dim b As Byte

strArr = Array("str.", "strasse", """")

For Each x In Selection
For b = 0 To UBound(strArr)
If InStrRev(x, strArr(b)) > 0 Then
Selection.Replace x, Replace(x, strArr(b), "straße", InStrRev(x,  strArr(b)))
End If
Next b
Next
End Sub

This code transform example:
没有课程的straße中的“Lessonstrasse”......

1 个答案:

答案 0 :(得分:0)

由于您已经反转了您正在搜索的字符串,因此正在搜索的字符串也需要反转。因此"strArr(b)"应该成为StrReverse(strArr(b))。下面的代码更正了这一点,更改了要演示的数组文本。

另外,我注意到您的替换文字没有点。您可能希望使用".straße"代替"straße"。此外,您可能会发现用户定义的功能更方便,但当然,我不了解您的使用情况。

Sub strreplace()
    Application.ScreenUpdating = False
    Dim strArr As Variant
    Dim b As Byte
    Dim x As Range

    strArr = Array(".Ext1", ".Ext2")

    For Each x In Selection.Cells
        For b = 0 To UBound(strArr)
            x.Value2 = StrReverse(Replace(StrReverse(x.Value2), StrReverse(strArr(b)), "straße", 1, 1))
        Next b
    Next x
End Sub

结果...

enter image description here