脚本不改变所有匹配的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 = 1
和x+1
而不是x
在接下来的三行。
For x = 1 To Len(r.Text) - Len(strString) Step 1
对于所有其他项目“asd”,你基本上说:对于x = 1到(3 -3)这是零。
如果你通过你的代码,你会发现嵌套for / next循环下的代码永远不会被执行。