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

Excel 将单元格样式从一种样式更改为另一种样式,excel,vba,Excel,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 =

我正在尝试将工作簿中具有特定样式的所有单元格更改为另一个,然后删除旧样式

我有一些代码是独立工作的,但是当它被应用到每个工作表上使用范围很大的大型工作簿时,它可能需要很长时间或者崩溃

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/something来只针对具有该样式的单元格


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

既然您关闭了
应用程序。屏幕更新
,您就不需要
应用程序。转到
,因为这样做的主要目的是可以明显地滚动到某个范围。根据,该函数将每个单元格范围添加到撤消过程的后台更改堆栈中,这将花费您大量的周期<代码>错误恢复下一步
除了可能隐藏其他问题外,什么也不做。非常感谢-我已经做了更改。但是它仍然有点慢,因为它需要检查每个工作表使用范围内的每个单元格,是否有什么可以避免的(可能类似于xlspecialcells?)