What you have is likely to do the job. However, this would be extremely inefficient. The best way would be to find the find and replace it as follows.
'set the next find to find the red With Application.FindFormat.Font .ColorIndex = 3 End With 'set the next find to replace with black With Application.ReplaceFormat.Font .ColorIndex = 1 End With 'Do the actual replacing For Each aSheet In ActiveWorkbook.Worksheets aSheet.Activate Cells.Replace What:="", Replacement:="", LookAt:=xlPart, SearchOrder:= _ xlByRows, MatchCase:=False, SearchFormat:=True, ReplaceFormat:=True Next aSheet
This is done for all cells of all sheets for the entire book. You can also do this by going to the regular search and replace window, then clicking the options button.
source share