【问题标题】:How to use case structure for comparing string如何使用案例结构来比较字符串
【发布时间】:2014-10-03 01:33:50
【问题描述】:

所以我在 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

【问题讨论】:

  • 什么是ct Case cell.Text?还有为什么是.Text 而不是.Value

标签: string excel compare select-case vba


【解决方案1】:

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

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

这就是我的做法。 (未测试

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

【讨论】:

    【解决方案2】:

    如果有些颜色正确而有些颜色不正确,这表明某些单元格与您要查找的文本不匹配。未着色的单元格中是否有隐藏的空白?

    我还会在它的末尾添加一个case else 和一个msgbox 或类似的东西,以便在某些情况与您的案例不匹配时提醒您。然后,您将有一个特定的实例进行调查。最后要抓住一切总是很重要的。

    【讨论】:

    • VBA 没有Switch/Catch All
    猜你喜欢
    • 2017-06-05
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    • 1970-01-01
    • 1970-01-01
    • 2019-12-18
    • 2022-07-22
    • 1970-01-01
    相关资源
    最近更新 更多