使用Excel VBA代码的条件Case语句

时间:2017-05-24 15:40:57

标签: excel vba excel-vba conditional-formatting

我正在尝试编写一个条件案例语句,该语句在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

2 个答案:

答案 0 :(得分:2)

Exit For行会在第一次停止迭代后停止。我想,这不是,你想要的。或者你必须在case语句中写它。

答案 1 :(得分:0)

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

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

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

当您在赋值运算符的右侧有一个布尔表达式时,它的计算结果为TrueFalse。因此,当resultTrue时,ColorIndex将为40,否则为False

然后result无法完成任务。

如果您打算实际设置ColorIndex,请删除result =作业,将布尔表达式转换为指定ColorIndex的作业指令。

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