为什么此代码无法正常运行?任务是仅在首先发生时从正确的位置替换(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”......
答案 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
结果...