2017-10-11 68 views
0

我正在尝试循环遍历特定工作簿中的所有工作表,并尝试将格式从一个工作表复制到另一个工作表。这里的目标是找到相应的工作表,它具有相同的名称,但后面加上“(FF)”。然后,我想将该工作表的格式复制到不包含附加版本“(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 

回答

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 

现在,当你得到一个错误,你处理它通过恢复(这将清除错误)。如果您没有收到错误,程序将在到达错误处理程序之前退出。

+0

天才!感谢您的帮助。我会注意到这个结构以备将来参考。 –

+0

非常欢迎@JonRose – KacireeSoftware

相关问题