为什么我的错误处理程序只能运行一次?

时间:2017-10-11 23:19:20

标签: excel-vba vba excel

我试图遍历特定工作簿中的所有工作表,并尝试将格式从一个工作表复制到另一个工作表。这里的目标是找到相应的工作表,它具有相同的名称,但附加了"(FF)"。然后我想将该Sheet的格式复制到不包含附加版本"(FF)"的表格中。不幸的是,并非所有纸张都包含相应的纸张,附带的"(FF)"。话虽这么说,我已经写了下面的宏来帮助我吹过任何"下标范围"通过将其发送到错误处理程序的错误。问题是,在工作簿上测试时,没有工作表没有相应的表格附加"(FF)"它只吹过第一个"下标超出范围"这是错误的。

为什么我的错误处理程序只能运行一次?

Sub InitializeFormat()

    Dim ws As Worksheet


    For Each ws In Worksheets
        If Right(ws.Name, 4) <> "(FF)" Then
            On Error GoTo SheetDoesNotExist
            Sheets(ws.Name & "(FF)").Cells.Copy
            Sheets(ws.Name).Cells.PasteSpecial Paste:=xlFormats
        End If
SheetDoesNotExist:
    Next ws

End Sub

1 个答案:

答案 0 :(得分:0)

因为您没有从错误中恢复。您的代码存在一些技术问题。试试这个:

    Sub InitializeFormat()
    On Error GoTo SheetDoesNotExist

        Dim ws As Worksheet


        For Each ws In Worksheets
            If Right(ws.Name, 4) <> "(FF)" Then
                Sheets(ws.Name & "(FF)").Cells.Copy
                Sheets(ws.Name).Cells.PasteSpecial Paste:=xlFormats
            End If
    NextSheet:
         Next ws
         Exit Sub
    SheetDoesNotExist:
        Resume NextSheet

    End Sub

现在当你收到错误时,你可以通过RESUMING处理它(这会清除错误)。如果没有收到错误,程序将在到达错误处理程序之前退出。