尽管条件格式化,excel中的单元格也会闪烁

时间:2015-04-11 16:25:59

标签: excel vba

我在下面有一些代码可以使单元格在预定范围内,从白色到红色闪烁颜色。

出于我的目的,我需要此代码仅适用于具有特定值的单元格 - 例如任何数值低于50的单元格。

适用于整个范围的代码如下

Public NextFlash As Double
Public Const FR As String = "Sheet1!B3:D6"
Sub StartFlashing()

If Range(FR).Interior.ColorIndex = 3 Then
Range(FR).Interior.ColorIndex = xlColorIndexNone
Else
Range(FR).Interior.ColorIndex = 3
End If
NextFlash = Now + TimeSerial(0, 0, 1)
Application.OnTime NextFlash, "StartFlashing", , True
End Sub
Sub StopFlashing()
Range(FR).Interior.ColorIndex = xlColorIndexNone
Application.OnTime NextFlash, "StartFlashing", , False
End Sub

1 个答案:

答案 0 :(得分:0)

这样的东西可以看每个细胞。

避免查看每个单元格的另一个选项是更改范围"Sheet1!B3:D6",以便仅将其设置为低于50的单元格。但这需要持续跟踪并重新评估事件更改的范围。

因此,对于12个单元格范围,下面的循环方法应该足够了。

Public NextFlash As Double
Public Const FR As String = "Sheet1!B3:D6"

Sub StartFlashing()
Dim rng1 As Range
For Each rng1 In Range(FR).Cells
    If rng1.Value < 50 Then
        If rng1.Interior.ColorIndex = 3 Then
            rng1.Interior.ColorIndex = xlColorIndexNone
        Else
            rng1.Interior.ColorIndex = 3
        End If
    Else
        rng1.Interior.ColorIndex = xlColorIndexNone
    End If
Next

NextFlash = Now + TimeSerial(0, 0, 1)
Application.OnTime NextFlash, "StartFlashing", , True
End Sub

Sub StopFlashing()
    Range(FR).Interior.ColorIndex = xlColorIndexNone
    Application.OnTime NextFlash, "StartFlashing", , False
End Sub