2014-09-30 143 views
1

我運行此宏時遇到運行時13錯誤類型不匹配。呼籲是「如果...然後」。如何解決運行時13錯誤類型不匹配?

該代碼似乎正常工作。我能想到的唯一問題是,在使用公式命名單元格(1,8)然後複製,粘貼值發生之前,會有一個單獨的宏運行。

子NewWb()

Set wb1 = ThisWorkbook 
Set wb2 = Workbooks.Add 

For Each Worksheet In wb1.Worksheets 
    **If Worksheet.Cells(1, 8).Value = "PI Fin Ops" Then** 
     Worksheet.Move After:=wb2.Sheets(wb2.Sheets.Count) 
    End If 
Next Worksheet 

末次

任何幫助表示讚賞!

回答

1

如果單元格包含錯誤值,則通常會引發該錯誤。你可以很容易地用IsError函數來捕獲它。

我也建議避免在變量命名約定中使用保留或半保留關鍵字,如Worksheet

Dim WS as Worksheet 
Dim wb1 as Workbook 
Dim wb2 as Workbook 

Set wb1 = ThisWorkbook 
Set wb2 = Workbooks.Add 

For Each WS In wb1.Worksheets 
    If Not IsError(WS.Cells(1,8).Value Then 
     If WS.Cells(1, 8).Value = "PI Fin Ops" Then 
      WS.Move After:=wb2.Sheets(wb2.Sheets.Count) 
     End If 
    End If 

Next WS 
+1

或者乾脆在'WS'中更改變量名'worksheet'。例如:'昏暗的工作簿作爲工作簿... ...(是壞的)...瞭解?還有一件事,明確使用選項! – 2014-10-01 17:29:45

相關問題