VBA, чтобы проверить, содержит ли ячейка что-либо из списка - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь запустить мини-календарь в Excel, и мне нужен способ автоматического ввода цвета фона в определенные дни в зависимости от местоположения пользователя.

У меня есть кое-что, что работает по индивидуальным критериям здесь:

Sub Autofilldays()

'First column to check is located in cell B79
'Value to check for is located in cell H28
  For i = ActiveSheet.Columns.Count To Range("B79") Step -1
        If InStr(1, Cells(6, i), Range("H28")) Then Columns(i).Rows("7:19").Interior.Color = rgb(201, 201, 201)

Next i
End Sub

Он извлекает первый столбец, чтобы начать поиск из ячейки B79 (первый столбец зависит от ввода пользователя где-то еще), и, если он соответствует содержимому ячейки H28, он окрашивает строки с 7 по 19 в том же столбце.

Это прекрасно работает, но мне также нужно что-то, что может сделать то же самое, но для более широкого диапазона критериев, поэтому, если искомая ячейка содержит что-либо, хранящееся в ячейках H28: H50 (например), тогда раскрасьте те же строки, что и раньше.

Я не могу на всю жизнь потренироваться, если это возможно, и, если это так, какой синтаксис он хочет увидеть. К сожалению, это не так просто, как изменить

 If InStr(1, Cells(6, i), Range("H28"))

до

 If InStr(1, Cells(6, i), Range("H28:H50"))

Хотелось бы, чтобы все же было!

Возможно, у меня будет 100 различных возможных критериев в этом диапазоне, поэтому использование большого количества ИЛИ не будет возможным. Если у кого-то есть идеи, что мне нужно искать, я буду очень признателен.

1 Ответ

0 голосов
/ 28 июня 2018

использовать цикл для просмотра значений этого диапазона и проверять каждое из них по отдельности

Dim Criteria As Variant
For Each Criteria In Range("H28:H50").Value
    If InStr(1, Cells(6, i), Criteria)
        'your code
    End If
Next Criteria 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...