Сбой цикла условного формата vba
У меня есть этот код, который почти работает:
Sub condFormat()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
ws.Columns("B:B").FormatConditions.Delete
ws.Columns("B:B").FormatConditions.Add Type:=xlExpression, Formula1:="=LEN(B1)>100"
ws.Columns("B:B").FormatConditions(1).Interior.ColorIndex = 3
Next
End Sub
Но это не будет обновлять фактическую ячейку должным образом.
Я в конечном итоге с такими вещами, как:
=LEN(B65517)>100
в столбце В клетки.
Как я могу изменить это, чтобы ссылаться на правильные ячейки в столбце B?
Любая помощь приветствуется.
2 ответа
Решение
В итоге я просто сделал цикл, так как не мог заставить его работать другим способом:
Sub condFormat()
Application.ScreenUpdating = False
Dim ws As Worksheet
Dim myRange As Range, c As Range
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
ws.Columns("B:B").FormatConditions.Delete
Set myRange = Range("B2", Cells(Rows.Count, "B").End(xlUp))
For Each c In myRange
If Len(c) > 100 Then c.Interior.ColorIndex = 3
Next
Next
Application.ScreenUpdating = True
End Sub
Ссылки на ячейки могут быть смещены в зависимости от выбранной ячейки.
Вы можете добавить абсолютную ссылку на столбец B:
ws.Columns ("B: B"). FormatConditions.Add Тип:=xlExpression, Formula1:="=LEN($B1)>100"
Но самый простой способ - это явно выбрать ячейку, вероятно, A1:
ws.Activate
ws.Cells (1, 1). Выбрать
Вот ссылка от Microsoft, объясняющая проблему.