Я пробовал несколько способов проверить, является ли любая ячейка в пределах диапазона цветным, и задался вопросом, существует ли более простой способ сделать то же самое.
Моя первая попытка:
If Range("A1:O50").Interior.ColorIndex = xlNone Then MsgBox ("Nothing is colored") Else MsgBox ("Sth is colored")
Это сработало хорошо, хотя я действительно хочу запускать sth, когда любая ячейка в пределах диапазона окрашена.
2-я попытка:
If Not Range("A1:O50").Interior.ColorIndex = xlNone Then MsgBox ("Sth is colored") Else MsgBox ("Nothing is colored")
Это не сработало. Кажется, что VBA не понимает отрицание "Range.Interior.ColorIndex = xlNone".
Я знаю, что могу сделать это так:
If Range("A1:O50").Interior.ColorIndex = xlNone Then Else MsgBox ("Sth is colored")
Однако при наличии множества условий это не так интуитивно понятно и не просто в использовании.
3-я попытка:
If CBool(Range("A1:O50").Interior.ColorIndex = xlNone) = False Then MsgBox ("Sth is colored")
На этот раз я попытался преобразовать ... ColorIndex = xlNone вещь в логическое значение, но он вернул «недопустимое использование нуля», когда любая ячейка была фактически окрашена.
4-я попытка:
Dim b As Boolean
If Range("A1:O50").Interior.ColorIndex = xlNone Then b = True Else b = False
If b = False Then MsgBox ("Sth is colored")
Работало нормально, но не достаточно просто для меня. Я хочу сделать это в 1-2 строки и не использовать переменную, если это возможно.
Есть ли более простой способ выполнить ту же задачу? Любое вдохновение ценится. Большое спасибо!