VBA-将单元格样式从一种样式更改为另一种

时间:2019-06-04 16:13:22

标签: vba

我正在尝试编写一些代码,以将工作簿中具有特定样式的所有单元格更改为另一种样式,然后删除旧样式。

我有下面的代码是单独工作的,但是当将它应用于每张纸上使用范围较大的大型工作簿时,可能会花费很长时间或崩溃。

Sub ChngStyle()

Dim sty1 As String: sty1 = "Total"
Dim sty2 As String: sty2 = "From"
Dim ws As Worksheet
Dim cell As Range

    Application.ScreenUpdating = False

    For Each ws In ActiveWorkbook.Worksheets
        For Each cell In ws.UsedRange
            If cell.style = sty1 Then
                Application.Goto cell
                On Error Resume Next
                cell.style = sty2
            End If
        Next cell
    Next ws

    Application.ScreenUpdating = True
    MsgBox "Done"
    ActiveWorkbook.Styles(sty1).Delete

End Sub

是否可以对特定样式使用FIND / FINDFORMAT /其他方式仅以该样式为目标单元格?

还是有一种更有效的方法来查看代码是否需要在遍历整个使用范围之前首先在工作表上运行?

任何帮助都非常感谢,谢谢!

1 个答案:

答案 0 :(得分:0)

我没有足够的声誉来对此发表评论,但是请尝试添加:

Application.Calculation = xlCalculationManual

Application.ScreenUpdating = False

然后当您将ScreenUpdating设置回True时,添加:

Application.Calculation = xlCalculationAutomatic    

这应该加快代码的速度,尤其是在工作表中发生大量计算的情况下。