【问题标题】:Visual Basic Excel Conditional FormulasVisual Basic Excel 条件公式
【发布时间】:2017-04-27 00:39:42
【问题描述】:

嘿,这就是我正在做的事情。我在系统中跟踪截止日期,它们是电子表格的一部分。如果超过 60 天,我将它标记为黄色,如果过期(表格中的条件格式),我会设置一个计数 =COUNTIF(I3:I02, ">=" &TODAY()+60) 今天之后 =COUNTIF(I3:I102, "

我使用这些计数来指示某物是否已标记,然后将它们推入下面的公式。我现在要做的实际上是让工作表的选项卡根据工作表中的某些内容是几乎到期还是过期来改变颜色,这就是我到目前为止所拥有的。

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 的值? IE。一个覆盖另一个。如果有红色,我需要它保持红色。基本上,如果 if 语句为真,如果它不继续检查 b2..etc 的值,我希望它停止。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    如果 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 的位置进行任何测试 - 只要(手动)更改工作表上的 any 单元格,代码就会执行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-11
      • 1970-01-01
      • 2015-10-30
      • 1970-01-01
      • 2014-12-27
      • 1970-01-01
      相关资源
      最近更新 更多