0

だから私は異なる名前の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
4

2 に答える 2

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

セル内の文字列を部分的にチェックする場合は、 with を使用INSTRしますvbTextCompare

于 2014-10-03T05:49:07.840 に答える
0

正しく色付けされているものとそうでないものがある場合、探しているテキストと一致しないセルがいくつかあることを示唆しています。色付けされていないセルに隠れた空白がありますか?

また、あなたのケースのいずれかと一致しない場合に警告するためにcase else、最後に aまたは同様のものを付けます。msgbox次に、調査する特定のインスタンスがあります。最後にすべてをキャッチすることが常に重要です。

于 2014-10-03T01:54:54.700 に答える