2016-06-21 21 views
0

我收到「溢出」錯誤,但小組按預期運行。我忽略了哪些錯誤?提前致謝。什麼是調試溢出錯誤?

Sub Bill_Detail_Exp_Prem_BUTTON1_() 

Dim LastRow As Long 
Dim wb1 As Workbook 
Dim i As Long 

Set wb1 = Workbooks("macro all client v.01.xlsm") 

LastRow = wb1.Sheets("Detail").range("C:C").Find("", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 

For i = 7 To LastRow 


    If wb1.Sheets("Detail").Cells(i, 15) <> 0 And wb1.Sheets("Detail").Cells(i, 16) = 0 Then 


     wb1.Sheets("Detail").Cells(i, 1) = ((wb1.Sheets("Detail").Cells(i, 15))) 

    Else 

     wb1.Sheets("Detail").Cells(i, 1) = ((wb1.Sheets("Detail").Cells(i, 17)) * (wb1.Sheets("Detail").Cells(i, 15)))/(wb1.Sheets("Detail").Cells(i, 16)) 

    End If 

Next i 


End Sub 
+0

我假設有一個機會,'(wb1.Sheets( 「詳細信息」)細胞(我,16)) '可能是零 –

回答

1

我會修改IF邏輯有點:

For i = 7 To LastRow 
    If wb1.Sheets("Detail").Cells(i, 16) = 0 Then 
     If wb1.Sheets("Detail").Cells(i, 15) <> 0 Then 
      wb1.Sheets("Detail").Cells(i, 1) = ((wb1.Sheets("Detail").Cells(i, 15))) 
     End If 
    Else ' it means wb1.Sheets("Detail").Cells(i, 16) <> 0 , so no division by 0 and no Overflow Error 
     wb1.Sheets("Detail").Cells(i, 1) = ((wb1.Sheets("Detail").Cells(i, 17)) * (wb1.Sheets("Detail").Cells(i, 15)))/(wb1.Sheets("Detail").Cells(i, 16)) 
    End If 
Next i 
+0

非常感謝。你們都搖滾。 –

0

很難看到有什麼問題沒有得到數據的視圖,但你可以嘗試以下方法:更換

LastRow = wb1.Sheets("Detail").range("C:C").Find("", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

LastRow = wb1.Sheets("Detail").range("C1").End(xlDown).Row + 1

而且請注意,您可以通過在代碼中放置斷點(F9)來調試VBA。

1

您已測試單元格(i,16)不爲零,但只在單元格(i,15)<> 0的情況下進行測試。您可能需要添加另一個測試,ElseIf在繼續執行最終條件之前測試Cells(i,16)爲零。溢出與#DIV/0相同。