如何使用案例结构来比较字符串

时间:2014-10-03 01:33:50

标签: string excel excel-vba compare select-case vba

所以我在excel中有一个不同名称的表。我试图通过表解析并根据每个单元格中的名称,更改单元格背景颜色。 我试图使用一个开关控件,但它不适合我,因为一些名称被跳过。所以我得到它,一些细胞正确着色,一些细胞根本没有染色。这是代码

Sub selectAll()
    Sheets("Assignments").Activate
    Dim cell As Range
    For Each cell In Range("D7:X48")
        Select Case cell.Text
            ct Case cell.Text
            Case "John H."
                cell.Interior.ColorIndex = 6
            Case "Eve J."
                cell.Interior.ColorIndex = 4
            Case "Sam M."
                cell.Interior.ColorIndex = 46
            Case "Jeremy E."
                cell.Interior.ColorIndex = 46
        End Select
    Next
End Sub

2 个答案:

答案 0 :(得分:1)

为什么不进行条件格式化?如果您仍想使用VBA进行操作,请继续阅读......

你的代码没有按预期工作,但有些单元格被跳过,很可能是因为单元格中有空格或大小写(UPPER / LOWER / MIXED)不同。

我就是这样做的。 (的 UNTESTED

Sub selectAll()
    Dim cell As Range

    With Sheets("Assignments")
        For Each cell In .Range("D7:X48")
            Select Case UCase(Trim(cell.Value))
                Case "JOHN H.": cell.Interior.ColorIndex = 6
                Case "EVE J.": cell.Interior.ColorIndex = 4
                Case "SAM M.", "JEREMEY E.": cell.Interior.ColorIndex = 46
            End Select
        Next
    End With
End Sub

如果您想部分检查单元格中的字符串,请使用INSTRvbTextCompare

答案 1 :(得分:0)

如果有些正确着色而有些则没有,那么它告诉我某些单元格与您要查找的文本不匹配。在没有着色的单元格中是否隐藏了空白?

我还会在case else末尾添加一个msgbox或类似的内容,以便在某些内容与您的某个案例不符时提醒您。然后,您将有一个特定的实例进行调查。最后总是很重要。