我有这个VBA代码,它在我的工作表中成对应用条件格式。我的意思是,它寻找来自BC,DE,FG等的重复。问题是它为整个列执行此操作并且它确实减慢了我的工作表
当我检查此代码生成的规则时,例如B列和D列,它适用于:= $ B $ 1:$ C $ 87,$ B $ 89:$ C $ 1048576。跳过ROW 88的原因是因为我在这一行有总计并删除了所有规则。有没有办法改变这个代码,所以它只适用于87行以上而不是整张表?现在它正在大幅放缓。
Sub findDups()
Dim startCell As Range
Dim formatCols As Range
Set startCell = ActiveCell
Do
Set formatCols = startCell.Resize(1, 2).EntireColumn
formatCols.FormatConditions.AddUniqueValues
formatCols.FormatConditions(formatCols.FormatConditions.Count).SetFirstPriority
formatCols.FormatConditions(1).DupeUnique = xlDuplicate
With formatCols.FormatConditions(1).Font
.Color = -16383844
.TintAndShade = 0
End With
With formatCols.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 13551615
.TintAndShade = 0
End With
Set startCell = startCell.Offset(0, 2)
Loop Until startCell.Column >= 26
End Sub
答案 0 :(得分:1)
您只需要更改formatCols
(这很奇怪,我在代码中看不到任何避免第88行的内容)
...
Application.ScreenUpdating = False
Set startCell = ActiveSheet.Range("B1")
Do
Set formatCols = startCell.Worksheet.Range(startCell, startCell.Offset(86, 1))
...
Loop Until ....
Application.ScreenUpdating = True
.....
答案 1 :(得分:0)
我用来限制所选范围的一种方法是找到列中的最后一个单元格。 你在哪里使用这段代码:
Set formatCols = startCell.Resize(1, 2).EntireColumn
我会将其更改为使用Range对象:
这可以加快你的代码。
您还可以尝试一些额外的事情:
希望它有所帮助!
CompleteITPro