使用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式 ,则它的计算结果为True
或False
。 所以当ColorIndex
是40
时result
是True
,否则为False
。
然后没有result
。
如果您打算实际设置ColorIndex
,请移除result =
assignment以将布尔expression式转换为指定ColorIndex
的赋值指令。
然后还有另一个问题:在完成第一次迭代之前,您明确地退出循环。 如果你想实际循环,删除该Exit For
。