[英]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.