2015-03-19 22 views
0

我有一個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 

回答

3

似乎是一個索引問題。對於快速修復,請在接下來的三行中嘗試For x = 0而不是For x = 1x+1而不是x

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

對於所有其他項目'asd',你基本上說:對於x = 1到(3 -3)這是零。

如果您仔細檢查了代碼,您會發現嵌套for/next循環下的代碼從未得到執行。