Vba 在excel中快速格式化单元格

Vba 在excel中快速格式化单元格,vba,excel,Vba,Excel,我试图在电子表格上运行反向更新,以删除一系列单元格中的所有格式。遍历单元格足够快,但是进行内部引用似乎会显著降低代码的速度 Set Rng1 = ThisWorkbook.Worksheets(ws.Name).Range("A17:bb300") For Each c1 In Rng1 If c1.Interior.Pattern = xlSolid Then With c1.Interior .Pattern = xlNone

我试图在电子表格上运行反向更新,以删除一系列单元格中的所有格式。遍历单元格足够快,但是进行内部引用似乎会显著降低代码的速度

Set Rng1 = ThisWorkbook.Worksheets(ws.Name).Range("A17:bb300")
For Each c1 In Rng1
    If c1.Interior.Pattern = xlSolid Then
        With c1.Interior
           .Pattern = xlNone
           .TintAndShade = 0
           .PatternTintAndShade = 0
        End With
    End If
Next c1

干杯

或者您可以先确定所有单元格,然后一次性格式化:

Dim Rng1 As Range, Rng2 As Range
Set Rng1 = ThisWorkbook.Worksheets(ws.Name).Range("A17:bb300")

For Each c1 In Rng1
    If c1.Interior.Pattern = xlSolid Then
        If Rng2 Is Nothing Then
            Set Rng2 = c1
        Else
            Set Rng2 = Union(Rng2, c1)
        End If
    End If
Next c1

With Rng2.Interior
    .Pattern = xlNone
    .TintAndShade = 0
    .PatternTintAndShade = 0
End With

关闭/打开屏幕更新如何
Application.ScreenUpdate=False
然后在代码后面将其设置为
True
。您的问题是“…删除所有格式…”,但您的代码只清除少数格式属性。如果要清除所有格式,请使用
Rng1.ClearFormats