簡體   English   中英

VBA:條件格式化單元格 colors 基於定時器及其自身條件

[英]VBA: Conditional formatting cell colors based of timer with it's own conditions

我在文本框中有一個計時器,隨着計時器的計數,它會從綠色變為黃色和紅色。 顏色變化的時間間隔由單元格下拉菜單中的選擇決定。

問題:我怎樣才能讓周圍的細胞也改變顏色?

    If StopWatch.Range("E3") = "Anodized" Then
    
        If Calculations.Range("A1").Value > Calculations.Range("B3") And _
           Calculations.Range("A1").Value <= Calculations.Range("B4") Then
            With StopWatch.Shapes("TimeBox")
                .Fill.ForeColor.RGB = RGB(0, 255, 0) 'Green
            End With
        Else
            If Calculations.Range("A1").Value > Calculations.Range("B4") And _
               Calculations.Range("A1").Value <= Calculations.Range("B5") Then

                With StopWatch.Shapes("TimeBox")
                    .Fill.ForeColor.RGB = RGB(255, 255, 0) 'Yelow
                End With
            
            Else
                If Calculations.Range("A1").Value > Calculations.Range("B5") Then
                    With StopWatch.Shapes("TimeBox")
                        .Fill.ForeColor.RGB = RGB(255, 0, 0) 'Red
                    End With
                End If
            End If
        End If
    End If

上面的代碼是我目前擁有的條件格式的示例。 我在下拉框中重復了其他幾個選項。

將我的評論擴展到完整的答案...

使用StopWatch.Shapes("TimeBox").TopLeftCell.Offset(ROWS,COLUMNS).Resize(ROWS,COLUMNS)引用周圍的單元格。 例如,如果我想要 TimeBox 周圍的每個相鄰單元格,我可以像StopWatch.Shapes("TimeBox").TopLeftCell.Offset(-1,-1).Resize(3,3)一樣引用它們,這將返回 TimeBox 周圍的 3x3 Range左上角。

這是您應用此代碼的代碼。 我還將您的 If/Else 更改為看起來更干凈的 Select 案例。

    Dim LowerLimit As Variant, MidLimit As Variant, UpperLimit As Variant
    LowerLimit = Calculations.Range("B3").Value
    MidLimit = Calculations.Range("B4").Value
    UpperLimit = Calculations.Range("B5").Value
    
    Dim TimeBox As Shape, SurroundingRange As Range
    Set TimeBox = StopWatch.Shapes("TimeBox")
    Set SurroundingRange = TimeBox.TopLeftCell.Offset(-1, -1).Resize(3, 3) 'Edit this range as neccesary
    
    If StopWatch.Range("E3") = "Anodized" Then
        Select Case Calculations.Range("A1").Value
        Case LowerLimit To MidLimit
            TimeBox.Fill.ForeColor.RGB = RGB(0, 255, 0) 'Green
            SurroundingRange.Interior.Color = RGB(0, 255, 0)
        Case MidLimit To UpperLimit
            TimeBox.Fill.ForeColor.RGB = RGB(255, 255, 0) 'Yellow
            SurroundingRange.Interior.Color = RGB(255, 255, 0)
        Case Is > UpperLimit
            TimeBox.Fill.ForeColor.RGB = RGB(255, 0, 0) 'Red
            SurroundingRange.Interior.Color = RGB(255, 0, 0)
        End Select
    End If

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM