2016-06-21 4 views
0

"オーバーフロー"エラーが表示されますが、Subは期待どおりに実行されます。私が見過ごしているエラーは何ですか?前もって感謝します。デバッグのオーバーフローエラーは何ですか?

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( "詳細")はセル(I、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("C1").End(xlDown).Row + 1

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

を置き換えますコードにブレークポイント(F9)を配置してVBAをデバッグできることに注意してください。

1

セル(i、16)はゼロではなく、セル(i、15)<> 0の場合にのみテスト済みです。最後の条件に進む前に、セル(i、16)がゼロであることをテストするために別のテストElseIfを追加する必要があります。オーバーフローは#DIV/0と同じです。

関連する問題