循环遍历工作簿中所有工作表中的所有单元格,如果为红色则更改格式

时间:2011-04-28 14:25:56

标签: excel vba excel-vba

我正在尝试将excel工作簿的所有工作表的所有单元格中的所有红色文本更改为黑色。我正在使用以下内容:

Sub RedToBlack()
Dim Current As Worksheet
For Each Current In Worksheets
For Each cell In Current
    If cell.Font.ColorIndex = 3 Then
        cell.Font.ColorIndex = 0
    End If
  Next
Next
End Sub

我知道这是错的,但想要了解我正在尝试做什么。有人可以提供建议吗?谢谢你的帮助,我对此很陌生。

2 个答案:

答案 0 :(得分:4)

你有什么可能做的工作。但是,效率极低。更好的方法是使用像这样的查找和替换。

'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

这适用于整个工作簿的所有工作表中的所有单元格。您也可以通过转到正常查找并替换窗口然后按选项按钮来执行此操作。

答案 1 :(得分:0)

Sub change_color()
For Each sht In ActiveWorkbook.Sheets
    Set rng = sht.UsedRange
        For Each cell In rng
            If cell.Font.ColorIndex = 3 Then
                cell.Font.ColorIndex = 0
            End If
        Next cell
Next sht
End Sub