我有一个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
答案 0 :(得分:3)
似乎是一个索引问题。要快速解决问题,请在接下来的三行中尝试For x = 0
而不是For x = 1
和x+1
而不是x
。
答案 1 :(得分:2)
For x = 1 To Len(r.Text) - Len(strString) Step 1
对于所有其他项'asd',你基本上说:对于x = 1到(3 -3),这是零。
如果您单步执行代码,您会发现嵌套for / next循环下的代码永远不会被执行。