首页 > 解决方案 > 如果单元格字体 = 红色,则使用 VBA 问题突出显示单元格

问题描述

我有一个使用条件格式突出显示特定单元格的宏。出于某种原因,它也会突出显示没有文本的单元格。作为一种解决方法,我已经做到了,只是使单元格中的文本变为红色。我希望然后添加另一个宏来突出显示具有红色字体/文本的单元格,这样空单元格就不会像以前那样突出显示。

此代码使特定单元格变为粗体:

Sub Highlight()
'
' Highlight good values

Application.ScreenUpdating = False

Dim ws As Worksheet, LC As Long

For Each ws In ActiveWorkbook.Worksheets
    LC = ws.Cells(18, ws.Columns.Count).End(xlToLeft).Column

    With ws.Range(ws.Cells(18, 3), ws.Cells(79, LC))
            .FormatConditions.Add Type:=xlCellValue, Operator:=xlNotBetween, _
                Formula1:="=$C18", Formula2:="=$D18"
            .FormatConditions(Range(ws.Cells(18, 3), ws.Cells(79, LC)).FormatConditions.Count).SetFirstPriority
            With .FormatConditions(1).Font
                .Bold = True
                .Color = vbRed
                .TintAndShade = 0
            End With

    End With

    Next ws

Application.ScreenUpdating = True

End Sub

此代码尝试用红色字体突出显示单元格,但它不会更改单元格颜色 - 它不起作用

Sub cell_red()

Dim ws As Worksheet, LC As Long

For Each ws In ActiveWorkbook.Worksheets
LC = ws.Cells(18, ws.Columns.Count).End(xlToLeft).Column
    For Each cell In ws.Range(ws.Cells(18, 3), ws.Cells(79, LC))

        If cell.Font.Color = vbRed Then
            cell.Interior.ColorIndex = 44
        End If

    Next

Next ws

End Sub

This may help:
https://answers.microsoft.com/en-us/msoffice/forum/all/conditional-formatting-ignoring-blank-cells/719f087c-5e30-4830-9b7d-0b93cffad357

not sure how to incorporate it though

标签: excelvba

解决方案


您是否绝对必须使用它,Conditional Formatting或者您是否也愿意接受其他建议?当我阅读您的帖子时(在查看代码示例之前),我有一些想法。

我不喜欢做条件格式;对工作表进行一些小的更改,您创建的一个规则最终变成了一组适用于较小范围的 5-6 条规则。因此,我通常喜欢让一个循环为我完成所有的格式化。

综上所述,假设我们正在循环 A 列:

For i = 2 to iLastRow (or whatever, 200, etc.)

  [ws].range("A" & i).interior.color = 16777215 'changing it to 'no fill' (in case it was colored before)

  If [ws].range("A" & i) [rest of the condition] Then
        [ws].range("A" & i).Interior.Color = [color no.]
  end if

next i

这也.Interior.Color适用.Cells(x,y)。当然,它不会随着工作表内容的每次更改而动态更改,但是 A)我发现这比条件格式更让我头疼,并且 B)您可以将该格式循环放入与您的 main 不同的Sub格式中,并且添加一个按钮以仅触发该格式子 - 因此您可以随时手动应用条件格式。或者,您可以将此格式代码添加到.SubCallSub Worksheet_OnChange


推荐阅读