2016-09-28 3 views
0

Для формы заказа электронных таблиц Excel, мне нужен способ, чтобы применить условное форматирование всех строк с одним макросом, из строки 78 вниз до тех пор, пока больше нет данных.Excel - много условного форматирования, преобразованные в VBA

В каждой колонке есть свои условные формулы форматирования. Некоторые из них имеют несколько формул. Я попытался использовать функцию Record Macro, но, поскольку происходит так много, полученный код VBA запутан, и я не уверен, как его объединить.

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

Существует около 15 столбцов, для которых применяется условное форматирование. Вот несколько столбцов, чтобы показать, что я работаю с:

A78:

формула: = И ($ A $ 78 = "", COUNTA (78:78)> = 1) | белый текст, красное заполнение | Стоп Если Истинного

С78:

Формат только клетки, содержащие> Конкретная Text> начиная с> M | нет формата | Стоп Если Истинная

Формат только клетка, содержащая> Конкретная Text> начиная с> F | нет формата | Стоп Если True

Формат только ячеек, содержащих> Нет ошибок | красный фон, белый текст

D78:

Значение ячейки больше, чем 300

+0

Вы говорите, что не хотите, чтобы кто-то написал ** все ** кода для вас, какой у вас бит? –

+1

[Шаг 1 - Начните с макросъемщика] (https://support.office.com/en-us/article/Step-1-Start-with-the-macro-recorder-6DC53056-1DE1-4483-AA07- 63E4E0EFE3C2). – Jeeped

+0

Я уже пробовал использовать рекордер, как я уже сказал. Это не работает правильно, когда я запускаю его позже. Если кто-то может помочь мне с кодом для того, что я написал выше, я думаю, что я мог бы сделать все остальное. – Robby

ответ

0

Вы можете сделать это довольно легко с DO-WHILE Loop. Я дам начало «D78», и вы сможете закончить все остальное.

sub formatCells() 

    Dim count as Integer 
    Range("D78").Activate 

    count = 0 
    Do While ActiveCell.Offset(count, 0).Value <> "" 
     If ActiveCell.Offset(count, 0).Value > 300 Then 
      'Do Stuff 
     End If 
     count = count + 1 
    Loop 
End Sub 
+0

Спасибо, но, по крайней мере, с этим методом, это не сработает для меня. И, возможно, то, что я хочу, вообще не возможно с VBA. Я заменил ваш «Do Stuff» на то, что мне было нужно, но я хочу, чтобы он сохранял значение по умолчанию, если значение ячейки изменилось на число ниже 300. – Robby

Смежные вопросы