0

我有这个几乎可以工作的代码:

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 列单元格中。

如何修改它以引用 B 列中的正确单元格?

任何帮助表示赞赏。

4

2 回答 2

3

单元格引用可以根据当前选定的单元格进行移动。

您可以添加对 B 列的绝对引用:

ws.Columns("B:B").FormatConditions.Add 类型:=xlExpression, Formula1:="=LEN($B1)>100"

但最简单的方法可能是显式选择一个单元格,可能是 A1:

ws.激活

ws.Cells(1, 1).Select

这是Microsoft 解释该问题的链接。

于 2013-09-13T14:08:27.940 回答
0

我最终只是做了一个循环,因为我无法让它以另一种方式工作:

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
于 2013-09-13T16:21:46.050 回答