脚本不会更改所有匹配字符串的字体颜色

时间:2015-03-19 02:59:02

标签: excel excel-vba vba

我有一个Excel宏来更改某些字符串的字体颜色。但是,它不会更改所选字符串的所有实例。例如:

A4: asd 
C4: asd
C5: asd
C6: asdf 

仅更改C6 asd

Private Sub Cmd_Click()
Dim r as Range
Dim strString$, x&, y$
strString = Range("A4").value
For Each r in Range("C4:C6")
    r.Font.ColorIndex = 1
    For x = 1 To Len(r.Text) - Len(strString) Step 1 
        If Mid(r.Text, x , Len(strString)) = strString Then 
            r.Characters(x, Len(strString)).Font.ColorIndex = 5
            r.Characters(x, Len(strString)).Font.Bold = 1
        End If 
    Next x
Next r
End Sub

2 个答案:

答案 0 :(得分:3)

似乎是一个索引问题。要快速解决问题,请在接下来的三行中尝试For x = 0而不是For x = 1x+1而不是x

答案 1 :(得分:2)

 For x = 1 To Len(r.Text) - Len(strString) Step 1

对于所有其他项'asd',你基本上说:对于x = 1到(3 -3),这是零。

如果您单步执行代码,您会发现嵌套for / next循环下的代码永远不会被执行。