簡體   English   中英

根據單元格值VBA更改范圍顏色

[英]Change range color depending on cell value VBA

我正在嘗試使我的代碼正常工作,因此,如果用戶在單元格D19中鍵入“ 1”,則單元格F2和F3的背景色將變為紅色,如果它們鍵入“ 2”,則顏色將變為黃色。 我看不到我的代碼為什么不起作用,任何幫助。 謝謝。

Sub ColorColumns()
   Dim r1 As Range, r2 As Range
      Set r1 = Range("D19")
      Set r2 = Range("F2:F3")
      If r1.Value = 1 Then r2.Interior.Color = vbRed
      If r1.Value = 2 Then r2.Interior.Color = vbYellow
End Sub

我也建議使用條件格式。 但是,要回答所提出的問題:將其放入具有這些范圍的工作表的工作表模塊中。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("D19")) Is Nothing Then
        Select Case Range("D19").Value
            Case 1
                Range("F2:F3").Interior.Color = vbRed
            Case 2
                Range("F2:F3").Interior.Color = vbYellow
        End Select
    End If
End Sub

我已經測試了此代碼,並且運行良好。 如果您想刪除D19的值既不是1也不是2的顏色,那么您也可以包含Case Else語句。

條件格式會更好,這樣用戶每次在D19單元格中鍵入時,Excel都會修改F2:F3背景色

Sub ColorColumns()
    Dim r As Range

    Set r = Range("F2:F3")

    r.FormatConditions.Delete

    r.FormatConditions.Add Type:=xlExpression, Formula1:="=$D$19=1"
    r.FormatConditions(r.FormatConditions.Count).SetFirstPriority
    With r.FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .Color = 244
        .TintAndShade = 0
    End With
    r.FormatConditions(1).StopIfTrue = False

    r.FormatConditions.Add Type:=xlExpression, Formula1:="=$D$19=2"
    r.FormatConditions(r.FormatConditions.Count).SetFirstPriority
    With r.FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
    End With
    r.FormatConditions(1).StopIfTrue = False
End Sub

注意r.FormatConditions.Add Type:=xlExpression, Formula1:="=$D$19=2"的條件"=$D$19=2" r.FormatConditions.Add Type:=xlExpression, Formula1:="=$D$19=2"

暫無
暫無

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

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