我试图遍历特定工作簿中的所有工作表,并尝试将格式从一个工作表复制到另一个工作表。这里的目标是找到相应的工作表,它具有相同的名称,但附加了"(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
答案 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处理它(这会清除错误)。如果没有收到错误,程序将在到达错误处理程序之前退出。