Visual Basic Excel条件公式

时间:2017-04-27 00:39:42

标签: excel-vba vba excel

嘿,所以我继续说下去了。我正在跟踪系统中的截止日期,它们是电子表格的一部分。我把它标记为黄色,如果超过60天红色,如果它超过(表格中的条件格式)我然后有一个计数设置     = COUNTIF(I3:I02,“> =”& TODAY()+ 60)今天之后     = COUNTIF(I3:I102,“< =”& TODAY())过期

我使用这些计数来表明某些东西是否已被标记,然后将它们推入下面的公式中。我现在要做的实际上是让工作表的标签根据表格中的某些内容是否已到期或过期而改变颜色这是我到目前为止所做的。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$B$1" Then
        Select Case Target.Value
        Case Is > 0
            Me.Tab.Color = vbRed
        End Select
    ElseIf Target.Address = "$B$2" Then
        Select Case Target.Value
        Case Is > 0
           Me.Tab.Color = vbYellow
        End Select
    Else
        Me.Tab.Color = vbGreen
    End If
End Sub

这可以改变选项卡的颜色,但如果我在删除红旗之后更改B2的值?即一个覆盖另一个。如果有红色,我需要它保持红色。基本上我希望它在if语句为真时停止,如果它不继续检查b2..etc的值。

1 个答案:

答案 0 :(得分:0)

如果更改B1或B2,您似乎想要检查B1和B2的值:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("B1").Value > 0 Then
        Me.Tab.Color = vbRed
    ElseIf Range("B2").Value > 0 Then
        Me.Tab.Color = vbYellow
    Else
        Me.Tab.Color = vbGreen
    End If
End Sub

根据您的问题,听起来像B1和B2包含公式。因此,当他们计算出不同的数字时,他们不会触发Worksheet_Change事件。因此,我没有对Target的位置进行任何测试 - 只要(手动)更改工作表上的任何单元格,代码就会执行。