如何用vba在字符串文本的任意位置开始替换插入字符串文本?

各位同学,大家好。

今天我们介绍一个比较普遍,但是用vba实现起来又比较麻烦的一个需求。

比如有如下的字符串

100+100/2+100-100/2

现在要把从左到右第5个位置开始的100/2中的100替换为0.1。

如果直接用Replace函数,代码如下:

Sub QQ1722187970()
    Dim sText As String
    sText = "100+100/2+100-100/2"
    Debug.Print VBA.Replace(sText, "100", "0.1")
End Sub

得到的结果是

0.1+0.1/2+0.1-0.1/2

也就是全部100都被替换了。

接下来,我们详细学习下Replace函数的语法

Replace(expression,find,*replace[,start[,count[,compare]]]*)

Replace函数可以把一个字符串中的部分字符串批量替换为其它字符串。

其中expression参数表示被查找的字符串,find参数表示要查找的字符串,replace参数表示要替换的字符串,start表示从什么位置开始查找,count表示要替换多少个找到的字符串,compare参数表示是怎么匹配。

根据上述的语法分析,通过设置start参数和count参数可以有选择的从任意位置开始替换任意个匹配到的字符串。

现在我们知道要替换的字符串的起始位置是5,我们可以使用如下的代码:

Sub QQ1722187970()
    Dim sText As String
    sText = "100+100/2+100-100/2"
    Debug.Print Left(sText, 4) & VBA.Replace(sText, "100", "0.1", 5, 1)
End Sub

也就是给定的任意一个字符串x,如果要从指定的位置y处开始查找要替换的字符串m,替换为字符串n,可以使用如下的vba通用代码:

Left(sText, y-1) & VBA.Replace(x, m, n, y, 1)

 

       

发表评论