2014-11-20 7 views
0

У меня есть обычная программа, которая перебирает все столбцы на всех листах книги, чтобы применить правило условного форматирования для всех из них. Правило сохраняется в каждом столбце, а правило, которое я использовал, работает, но цвет не изменяется после запуска подпрограммы. Затем я могу войти в рабочий лист, выбрать условное форматирование, нажать «изменить правило»> «ok»> «ok», а форматирование затем обновится на листе, не изменяя ничего о правиле. Что мне не хватает, чтобы заставить правило фактически внести изменения в рабочий лист?Условное форматирование VBA не применяется

For Each ws In ThisWorkbook.Worksheets 

If ws.Name Like "*Management*" Then Exit Sub 

lastRow = ws.UsedRange.Row + ws.UsedRange.Rows.Count - 1 
lastCol = ws.UsedRange.Column + ws.UsedRange.Columns.Count - 1 

ws.Cells.FormatConditions.Delete 

For col = 1 To lastCol 

    Set rng = ws.Range(ws.Cells(2, col), ws.Cells(lastRow, col)) 
    formulaStr = "=BITWISE_AND(2^INDEX(" & wsSchema.Name & "!$" & schemaLastCol & "$2" & _ 
     ":$" & schemaLastCol & "$" & schemaLastRow & ", MATCH(1, (" & wsSchema.Name & "!$A$2:$A$" & _ 
     schemaLastRow & "=""" & ws.Name & """)*(" & wsSchema.Name & "!$B$2:$B$" & schemaLastRow & "=$" & _ 
     XLCol(col) & "$1),0)), INDEX($" & XLCol(lastCol) & "$1:$" & XLCol(lastCol) & "$" & lastRow & ",ROW()))" 

    With rng 
     .FormatConditions.Add xlExpression, , formulaStr & " = 0" 
     With .FormatConditions(1) 
      .Interior.PatternColorIndex = xlAutomatic 
      .Interior.Color = RGB(255, 0, 0) 
      .Interior.TintAndShade = 0 
      .StopIfTrue = False 
      .SetFirstPriority 
     End With 
     .FormatConditions.Add xlExpression, , formulaStr & " > 0" 
     With .FormatConditions(2) 
      .Interior.PatternColorIndex = xlAutomatic 
      .Interior.Color = RGB(0, 255, 0) 
      .Interior.TintAndShade = 0 
      .StopIfTrue = False 
      .SetFirstPriority 
     End With 
    End With 

Next 

Следующей

+1

Попытку записать макрос и увидеть, какие методы вызывается, когда вы делаете правила редактирования вещи. – Seb

+0

Я так и называл методы, которые были включены в два внутренних блока с блоками, но без радости – user3760185

ответ

0

ПопробуйтеThisWorkbook.RefreshAllилиApplication.Calculate

+0

Да, попробовал оба, и ни одно не удалось. Интересно, что я обнаружил, что когда книга была открыта, форматирование было все на месте. К сожалению, это не помогает решить проблему, так как все данные должны быть удалены из рабочей книги после ее закрытия (данные извлекаются из базы данных SQL Server другой процедурой) – user3760185

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