2017-10-11 64 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

相關問題