我正在尝试编写一个条件案例语句,该语句在excel中搜索特定字符串以查找特定字符串,以及何时与字符串匹配单元格的背景颜色。
如果单元格为空或与字符串不匹配,则单元格不会发生任何事情。
现在我正在尝试遍历列中的每个单元格并检查所有可能的字符串值以进行比较,但它似乎不起作用。
这是我目前的代码:
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
答案 0 :(得分:2)
第Exit For
行会在第一次停止迭代后停止。我想,这不是,你想要的。或者你必须在case语句中写它。
答案 1 :(得分:0)
result = Range(rw.Row).Interior.ColorIndex = 40
这是一项任务。它将result
分配给赋值运算符右侧的表达式值。
Range(rw.Row).Interior.ColorIndex = 40
当您在赋值运算符的右侧有一个布尔表达式时,它的计算结果为True
或False
。因此,当result
为True
时,ColorIndex
将为40
,否则为False
。
然后result
无法完成任务。
如果您打算实际设置ColorIndex
,请删除result =
作业,将布尔表达式转换为指定ColorIndex
的作业指令。
然后还有另一个问题:在完成第一次迭代之前,你明确地退出循环。如果你想实际循环,请删除Exit For
。