2014-12-31 112 views
0

我有代碼,它的功能是將所有在合格/不合格列中具有「失敗」的貸款並將條件複製到另一個工作簿。我的問題是,確定合格/不合格的公式要求貸款編號位於其中一個標準列中,否則將返回「錯誤2023」的值。VBA錯誤處理:如何繞過有錯誤的行並停止代碼?

隨着我的下面的代碼,我得到一個類型不匹配的錯誤,因爲「錯誤2023」。我最初的想法是使用「On Error Resume Next」,以便如果我的值=錯誤2023它將轉到下一行並繞過錯誤只拉失敗......但我是新來的錯誤處理並不確定如何寫這個。這是關於這個問題的正確方法嗎?

assignmentRow = 4 
For x = 4 To lastRow 

Windows("POC Results.xlsm").Activate 

If Range("BE" & x).Value = "Fail" Then 'goes through workbook checking for "Fail" 
Range("B" & x, "F" & x).Copy 'copies first criteria and pastes 
Windows("Failed Audit Assigments.xlsm").Activate 
Sheets("POC").Range("B" & assignmentRow).PasteSpecial Paste:=xlPasteValues 

Windows("POC Results.xlsm").Activate 
Range("BF" & x).Copy 'copies 2nd criteria and pastes 
Windows("Failed Audit Assigments.xlsm").Activate 
Sheets("POC").Range("G" & assignmentRow).PasteSpecial Paste:=xlPasteValues 

assignmentRow = assignmentRow + 1 
End If 

Next x 
+0

什麼是錯誤信息? –

+0

這是運行時錯誤'13'類型不匹配。但是,當我進入我的VBA代碼,並突出顯示什麼值確定它是否匹配「失敗」它說錯誤2023. – arooney88

+2

您是否嘗試將'.Value'更改爲'.Text',因爲您正在匹配字符串? –

回答

3

根據您最近對其他答案的評論,您可以在檢查單元格是否包含失敗之前檢查獨立代碼行上的錯誤。

assignmentRow = 4 
    For x = 4 To lastRow 
     Windows("POC Results.xlsm").Activate 
     If Not IsError(Range("BE" & x).Value) Then 'check for cell error value first 
      If Range("BE" & x).Value = "Fail" Then 'goes through workbook checking for "Fail" 
       Range("B" & x, "F" & x).Copy 'copies first criteria and pastes 
       Windows("Failed Audit Assigments.xlsm").Activate 
       Sheets("POC").Range("B" & assignmentRow).PasteSpecial Paste:=xlPasteValues 

       Windows("POC Results.xlsm").Activate 
       Range("BF" & x).Copy 'copies 2nd criteria and pastes 
       Windows("Failed Audit Assigments.xlsm").Activate 
       Sheets("POC").Range("G" & assignmentRow).PasteSpecial Paste:=xlPasteValues 

       assignmentRow = assignmentRow + 1 
      End If 
     End If 
    Next x 

檢查單元格中的錯誤值應該是獨立的;與And沒有其他標準串在一起。

+0

@ arooney88 - 請記住,VBA中的字符串比較默認爲區分大小寫;例如* fail *≠* Fail *。 – Jeeped

+0

謝謝!這工作,並在我正在考慮的相同的邏輯。 – arooney88

1

可以使用IsEmpty()函數來確定範圍爲空的測試,而不是處理錯誤。

+0

我在'如果範圍(「BE」&X「.Value =」Fail「Then')上面輸入'On Error Resume Next',並且只是拉出了所有具有REF!錯誤而不是正確的失敗貸款的貸款。如果cell.value =一個錯誤,它會迭代到下一個x並繼續下去,有沒有辦法獲得它? – arooney88