使用Excel VBA代码的条件案例语句

我正在尝试编写一个条件案例语句,通过Excel中的特定列search特定的string,以及何时与单元格的背景颜色更改的string匹配。

如果单元格是空的或不匹配string,那么单元格不应该发生任何事情。

现在我正在尝试遍历列中的每个单元格,并检查所有可能的string值进行比较,但似乎并没有工作。

这是我目前的代码:

Sub interiorsStatus() Dim sh As Worksheet Dim rw As Range Set sh = ActiveSheet For Each rw In sh.Rows Select Case sh.Cells(rw.Row, "E").Value Case "DELIVERED" result = Range(rw.Row).Interior.ColorIndex = 33 Case "READY TO ORDER" result = Range(rw.Row).Interior.ColorIndex = 36 Case "ORDERED" result = Range(rw.Row).Interior.ColorIndex = 39 Case "DELIVERED" result = Range(rw.Row).Interior.ColorIndex = 43 Case "EXISTING" result = Range(rw.Row).Interior.ColorIndex = 40 Case "ON HOLD" result = Range(rw.Row).Interior.ColorIndex = 48 Case "GENERAL CONTRACTOR" result = Range(rw.Row).Interior.ColorIndex = 2 Case "AV & BLINDS" result = Range(rw.Row).Interior.ColorIndex = 15 Case "MILLWORK" result = Range(rw.Row).Interior.ColorIndex = 22 Case Else result = """" End Select Exit For Next rw End Sub 

Exit For行在第一次后停止迭代。 我想,这不是,你想要什么。 或者你必须写在案件陈述内。

 result = Range(rw.Row).Interior.ColorIndex = 40 

这是一个任务。 它将result分配给赋值运算符右侧的expression式的值。

 Range(rw.Row).Interior.ColorIndex = 40 

如果在赋值运算符的右侧有这个布尔expression式 ,则它的计算结果为TrueFalse 。 所以当ColorIndex40resultTrue ,否则为False

然后没有result

如果您打算实际设置ColorIndex ,请移除result = assignment以将布尔expression式转换为指定ColorIndex的赋值指令。

然后还有另一个问题:在完成第一次迭代之前,您明确地退出循环。 如果你想实际循环,删除该Exit For