脚本不改变所有匹配的string的字体颜色

我有一个Excelmacros,用于更改某些string的字体颜色。 但是,它不会更改所选string的所有实例。 例如:

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 

似乎是一个索引问题。 对于快速修复,请尝试For x = 0而不是For x = 1x+1而不是x在接下来的三行。

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

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

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