2015-11-12 2 views
-1

У меня есть код, который я хочу применить примерно к 1200 плюс строки. Работает хорошо для первой строки, я хочу, чтобы это применить к, если AC2 >= 1 то строка 2: 2 изменен на красный, я хочу повторить, если AC3 >=1 затем 3: 3 красный и так далее ...Условное формирование Do Loop

Sub Colour() 

Rows("2:2").Select 
Range("U2").Activate 
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$AC$2>=1" 
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority 
With Selection.FormatConditions(1).Interior 
    .PatternColorIndex = xlAutomatic 
    .Color = 255 
    .TintAndShade = 0 
End With 
Selection.FormatConditions(1).StopIfTrue = False 

End Sub 
+1

Путь сложнее. Просто используйте «= $ AC2> = 1» для всего диапазона (2: 1200 или что вам нужно). Нет необходимости применять отдельные условные формы для каждой строки, просто убедитесь, что вы понимаете знаки $ и используете их правильно. Это также будет быстрее и проще в обслуживании. – vacip

+0

Это не слишком сложно, что предлагаемые pnuts не будут работать, поскольку каждая строка имеет ряд других формул, которые дополняют некоторые суммы на основе того, имеют ли ячейки определенные критерии, только тогда, если AC, AD, AE ..... Etc is = to или больше 1, тогда строка становится красной, потому что другие ячейки в строке сделали там суммы, которые дают результат, который больше 1. Таким образом, это действительно полезно для экономии времени при применении условного форматирования более 1000 + строк! – Mikey

+1

Я не понимаю, почему это не сработает. Ты это пробовал? Я не могу придумать сценарий, в котором вам нужно повторно применять одну и ту же логику условного форматирования для каждой строки отдельно. Подумайте об этом, попытайтесь понять это, а затем выполните шаги pnuts. Он должен работать. **попробуй!** – vacip

ответ

0

Try это

Sub Colour() 

    Dim iCount As Integer 
    For iCount = 2 To 4 Step 1 
     Rows(iCount & ":" & iCount).Select 
     Range("U" & iCount).Activate 
     Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$AC$" & iCount & ">=1" 
     Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority 
     With Selection.FormatConditions(1).Interior 
      .PatternColorIndex = xlAutomatic 
      .Color = 255 
      .TintAndShade = 0 
     End With 
     Selection.FormatConditions(1).StopIfTrue = False 
    Next 
End Sub 

Этот цикл будет от 2 - 4 вы можете попробовать еще раз путем изменения 4 на номер вы хотите ....

1

Как упомянуто @vacip, VBA для этого может оказаться ненужным. Выделите все ячейки в листе и HOME> Стили - Условное форматирование, новые правила ..., Использовать формулу для определения того, какие клетки форматировать и значения формата, где эта формула верна::

=N($AC1)>=1 

Формат ..., выберите выбор форматирования, OK, OK.

Это относится и к Row1, но это самый простой способ установить диапазон как весь лист. Если AC1 содержит число, равное или большее одного, и вы не хотите, чтобы форматирование применялось к Row1, либо отрегулируйте параметр «Применяется к диапазону» в «Диспетчере правил условного форматирования», либо добавьте другое правило специально для Row1 с любым форматированием (или без него) хотите для этого и убедитесь, что правило имеет приоритет. Альтернативно, разверните формулу примерно на:

=AND(ROW()<>1,N($AC1)>=1)