Excel 要调试的溢出错误是什么?

Excel 要调试的溢出错误是什么?,excel,vba,Excel,Vba,我收到一个“溢出”错误,但子系统按预期运行。我忽略了什么错误?提前谢谢 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:=xlByR

我收到一个“溢出”错误,但子系统按预期运行。我忽略了什么错误?提前谢谢

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
Sub-Bill\u Detail\u Exp\u Prem\u BUTTON1\u()
最后一排一样长
将wb1设置为工作簿
我想我会坚持多久
设置wb1=工作簿(“宏所有客户端v.01.xlsm”)
LastRow=wb1.Sheets(“Detail”).range(“C:C”).Find(“),SearchOrder:=xlByRows,SearchDirection:=xlPrevious)。行
从i=7到最后一行
如果wb1.Sheets(“Detail”).单元格(i,15)0和wb1.Sheets(“Detail”).单元格(i,16)=0,则
wb1.表格(“细节”).单元格(i,1)=((wb1.表格(“细节”).单元格(i,15)))
其他的
wb1.表格(“细节”).单元格(i,1)=((wb1.表格(“细节”).单元格(i,17))*(wb1.表格(“细节”).单元格(i,15))/(wb1.表格(“细节”).单元格(i,16))
如果结束
接下来我
端接头

如果不查看数据,很难看出问题所在,但您可以尝试以下操作:替换

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

LastRow=wb1.图纸(“细节”).范围(“C1”).结束(xlDown).行+1


还请注意,您可以通过在代码中放置断点(F9)来调试VBA。

如果不查看数据,很难看到问题所在,但您可以尝试以下操作:替换

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

LastRow=wb1.图纸(“细节”).范围(“C1”).结束(xlDown).行+1


还请注意,您可以通过在代码中放置断点(F9)来调试VBA。

您已经测试了单元格(i,16)不为零,但仅在单元格(i,15)为0的情况下。您可能需要添加另一个测试,在进入最终条件之前,测试单元格(i,16)的ElseIf为零。溢出与#DIV/0相同。

您测试的单元格(i,16)不为零,但仅在单元格(i,15)为0的情况下。您可能需要添加另一个测试,在进入最终条件之前,测试单元格(i,16)的ElseIf为零。溢出与#DIV/0相同。

如果逻辑稍微有点逻辑,我会修改

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
i=7至最后一行的

如果wb1.表(“细节”).单元格(i,16)=0,则
如果wb1.Sheets(“Detail”).单元格(i,15)为0,则
wb1.表格(“细节”).单元格(i,1)=((wb1.表格(“细节”).单元格(i,15)))
如果结束
“Else”表示wb1.Sheets(“Detail”).Cells(i,16)0,因此没有被0除法,也没有溢出错误
wb1.表格(“细节”).单元格(i,1)=((wb1.表格(“细节”).单元格(i,17))*(wb1.表格(“细节”).单元格(i,15))/(wb1.表格(“细节”).单元格(i,16))
如果结束
接下来我

如果
逻辑有点不正常,我会修改

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
i=7至最后一行的

如果wb1.表(“细节”).单元格(i,16)=0,则
如果wb1.Sheets(“Detail”).单元格(i,15)为0,则
wb1.表格(“细节”).单元格(i,1)=((wb1.表格(“细节”).单元格(i,15)))
如果结束
“Else”表示wb1.Sheets(“Detail”).Cells(i,16)0,因此没有被0除法,也没有溢出错误
wb1.表格(“细节”).单元格(i,1)=((wb1.表格(“细节”).单元格(i,17))*(wb1.表格(“细节”).单元格(i,15))/(wb1.表格(“细节”).单元格(i,16))
如果结束
接下来我

我假设
(wb1.Sheets(“Detail”).Cells(I,16))
可能为零我假设
(wb1.Sheets(“Detail”).Cells(I,16))可能为零非常受欢迎。你们都很棒,非常感谢。你们都很摇滚。