vba condtional格式循环失败

我有这个代码几乎工作:

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中正确的单元格?

任何帮助赞赏。

单元格引用可以根据当前select的单元格进行移位。

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

(“B:B”)。FormatConditions.Addtypes:= xlExpression,Formula1:=“= LEN($ B1)> 100”

但最简单的方法是可能明确地select一个单元格,可能是A1:

ws.Activate

ws.Cells(1,1)。select

这里是微软解释这个问题的链接 。

我最终只是做了一个循环,因为我不能以另一种方式工作:

 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