Excel VBA-如果区域中的任何单元格文本已着色,则为单元格中的文本着色

时间:2019-01-18 13:34:22

标签: excel vba

我制作了一个功能,可以计算范围内的红色文本单元格。

Function CountRed(rngToSearch) As Long

Dim rngCel As Range

For Each rngCel In rngToSearch
    If rngCel.Font.Colorindex = 3 Then
        CountRed = CountRed + 1
    End If
Next rngCel

End Function

我现在正在尝试编写另一个函数,该函数求和一个范围内的单元格,如果该范围内有任何单元格的文本颜色为红色,那么结果也应该为红色。

这就是我得到的:

Function SumR(rngToSum) As Long

Dim rngCel As Range
Dim IsThereRed

IsThereRed = 0

For Each rngCel In rngToSum
    If rngCel.Font.Colorindex = 3 Then
        IsThereRed = 1
    End If
Next rngCel

SumR = Application.WorksheetFunction.Sum(Range(rngToSum))

If IsThereRed = 1 Then SumR.Font.Colorindex = 3

End Function

但是我得到一个错误。有什么办法可以与函数一起使用吗?

1 个答案:

答案 0 :(得分:0)

要分配字体颜色,您需要定义一个范围。在这种情况下,您可以定义一个范围,在该范围内,结果(SumR)将显示在工作表中。

假设您的结果将在单元格A10中。您先将结果放在该单元格中,然后根据需要为字体着色:

With Range("A10")
.Value2 = SumR
.Font.Color = RGB(255,0,0)
.NumberFormat = "#,##0" 'if you want to have a specific format for the number
End With