VBA如何替换第一个出现的符号为换行符或圆点?

如题所述

第1个回答  2021-08-03
请参考以下代码,希望对您有帮助:
Sub replaceA()
Dim rng As Range, sr$
For Each rng In ActiveSheet.Range("A1").CurrentRegion
If InStr(rng, "/") Then
sr = Replace(rng, "/", vbCrLf, , 1) '换成换行符
'sr = Replace(rng, "/", ".", , 1)'换成点
rng.Value = sr
End If
Next
End Sub追问

谢谢您的帮忙。如果是要替换第二个“/”为点,如何修改?

追答

可以先用instr函数查找出第一个“/”所在的位置比如是第n位,然后Replace的第四参数设置为n+1,也即从第n+1位开始执行替换,参考代码段如下:
n=InStr(rng, "/")‘查找出第一个“/”所在的位置
m=InStr(n+1,rng, "/")'再次从n+1的位置开始往右查找“/”所在的位置
If n>0 and m>0 Then'如果字符串中存在2个以上“/”,则执行下面的替换

sr = Replace(rng, "/", ".",m , 1)'第2个“/”换成点
rng.Value = sr'替换后的字符串赋值给rng
End If

追问

谢谢你的耐心教导,还有一点点小问题,麻烦再指导一下哦!非常谢谢!!!

追答

哈哈,对不起,是我没在意。是repalce的第4参数大于1导致的结果,会把起始位置前的所有内容都舍掉,这个功能很奇葩。既然这样,那么把前面的被舍掉的内容再加上去。sr的这句代码修改下:
sr = Mid(rng, 1, n) & Replace(rng, "/", ".", n + 1, 1)

追问

完美解决,非常谢谢!

本回答被提问者采纳
第2个回答  2022-06-28
Sub replaceA()Dim rng As Range, sr For Each rng In ActiveSheet.Range("A1").CurrentRegion If InStr(rng, "/") Then sr = Replace(rng, "/", vbCrLf, , 1) '换成换行符 'sr = Replace(rng, "/", "...

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网