嵌套如果/否则/结束如果在select大小写

我有一个Excel 2010表单。 我正在尝试改变基于几个variables的行颜色。

我明白,这可以通过条件格式来完成,并且已经可以工作了,但是正如用户可能做的那样,剪切和粘贴会杀死格式。 我希望VBA能解决这个问题。 可能还有一些我不知道的解决scheme。

这就是我想要发生的(所谓的逻辑)

on Sheet3 Columns (a – w) rows (2 – 10485) upon a change in any field, $x2, or a past due date in $T2 if(AND($X2="Open",$T2<>"",$T2<=TODAY()) then all row red ($a2-$x2) if(AND($X2="Open",$T2="",$T2>TODAY()) then all row white ($a2-$x2) =$X2="Completed" then all row grey ($a2-$x2) =$X2="Rescinded" then $X2 = orange and $A2 thru $W2 = grey 

x字段将使用一个下拉菜单(空白,打开,完成或取消)

这是我试图蹒跚在一起,代码失败的代码

 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A2:X1048567")) Is Nothing Then Exit Sub Select Case Cells(Target.Row, "X").Value Case "Open" If Cells(Target.Row, "T").Value <> "" And T2 <= TODAY() Then 'Range(Cells(Target.Row, "A"), Cells(Target.Row, "F")).Interior.ColorIndex = 3 Else Range(Cells(Target.Row, "A"), Cells(Target.Row, "F")).Interior.ColorIndex = x1None End Select Case "Completed" Range(Cells(Target.Row, "A"), Cells(Target.Row, "F")).Interior.ColorIndex = 15 Case "Rescinded" Range(Cells(Target.Row, "A"), Cells(Target.Row, "F")).Interior.ColorIndex = 15 Range(Cells(Target.Row, "A"), Cells(Target.Row, "F")).Interior.ColorIndex = 46 Case "" Range(Cells(Target.Row, "A"), Cells(Target.Row, "F")).Interior.ColorIndex = xlNone End Select End Sub 

你所描述的和你的代码示例中指出的有一些差异,所以我和前者一起去了。

 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A:X")) Is Nothing Then On Error GoTo safe_exit Application.EnableEvents = False Dim rw As Long, rng As Range For Each rng In Intersect(Target, Range("A:X")) rw = rng.Row If rw > 1 Then Select Case LCase(Cells(rw, "X").Value2) Case "open" If Cells(rw, "T").Value <> "" And Cells(rw, "T").Value <= Date Then Cells(rw, "A").Resize(1, 24).Interior.ColorIndex = 3 Else Cells(rw, "A").Resize(1, 24).Interior.Pattern = xlNone End If Case "completed" Cells(rw, "A").Resize(1, 24).Interior.ColorIndex = 15 Case "rescinded" Cells(rw, "A").Resize(1, 23).Interior.ColorIndex = 15 Cells(rw, "X").Interior.ColorIndex = 46 Case Else Cells(rw, "A").Resize(1, 24).Interior.Pattern = xlNone 'use pattern to turn off interior fill End Select End If Next rng End If safe_exit: Application.EnableEvents = True End Sub 

这也应该处理多个条目,例如从工作表中粘贴一些值。 “白色”我假设你的意思是删除任何填充颜色,而不是实际提供白色填充颜色。