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))可能为零非常受欢迎。你们都很棒,非常感谢。你们都很摇滚。