я пытаюсь сделать ячейку изменить цвет на основе его значения ячейки - PullRequest
0 голосов
/ 20 января 2020

Я хочу сделать цвет ячейки синим, если последнее число (в виде строки) является одним из многих выбранных мною номеров. Но то, что я получил, это то, что весь столбец меняется на синий, а не только на указанную ячейку c, которую я хочу. Вот мой код.

    Dim Count As Integer

    Count = 1

    Do
        If Right(Sheets(2).Cells(Count, 2), InStr(1, Sheets(2).Cells(Count, 2), "-")) = "10" Or "2" Or "20" Or "26" Or "3" Or "35" Or "36" Or "4" Or "43" Or "45" Or "6" Or "15" Or "18" Or "5" Then

            Sheets(2).Cells(Count, 2).Interior.ColorIndex = 33  

        End If

        Count = Count + 1

    Loop Until Sheets(2).Cells(Count, 2) = ""
End Sub

1 Ответ

0 голосов
/ 20 января 2020

Вот пример, который использует регулярное выражение вместо длинного оператора OR. Я предположил из вашего кода, что число в конце строки предшествует да sh.

Sub colorBlue ()

   Dim regex As Object
   Set regex = CreateObject("vbscript.regexp")

   'match 10,2,20,26,3,35,36,4,43,45,6,15,18,5
   With regex
     .Global = True
     .MultiLine = False
     .pattern = "(-)(2|3|4|5|6|10|15|18|20|26|35|36|43|45)$"
   End With

   Dim ws As Worksheet, cell As Range
   Dim row, lastrow As Long
   Set ws = ThisWorkbook.Sheets(2)

   lastrow = ws.Range("B" & ws.Rows.Count).End(xlUp).row
   For row = 1 To lastrow
     Set cell = ws.Range("B" & row)
     If regex.test(cell.Value) Then
         cell.Interior.ColorIndex = 33
     End If
   Next row

 End Sub

Для получения дополнительной информации см. Документы для Объектная модель и Регулярные выражения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...