什么是需要停止运行它似乎运行了很长一段时间?

我收到“溢出”消息。 代码正常工作,但运行了很长时间。 有什么build议么。

Sub Bill_Detail_Exp_Prem_Var() 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 

这是有效的吗?

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

如果不是的话

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

你的支票

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

不检查这两个等于零。 实际上当你做0/0时,错误Overflow事实上发生了。

 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 Dim destinationCell As Range Set destinationCell = wb1.Sheets("Detail").Cells(i, 1) Dim parameterFifteen, parameterSixteen, parameterSeventeen parameterFifteen = wb1.Sheets("Detail").Cells(i, 15) parameterSixteen = wb1.Sheets("Detail").Cells(i, 16) parameterSeventeen = wb1.Sheets("Detail").Cells(i, 17) If parameterFifteen <> 0 And parameterSixteen = 0 Then destinationCell = parameterFifteen ElseIf parameterSixteen <> 0 Then destinationCell = parameterSeventeen * parameterFifteen / parameterSixteen Else 'something else ? End If Next i