进度条上的算术溢出

时间:2015-08-28 17:23:02

标签: vb.net

此ftp上传片段导致bWorker.Report进度行上某些大小文件的“算术运算导致溢出”错误

Dim LastRow As Long

With ws02
    LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
End With


ws0.Range("A1:I3000").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
    ws02.Range("B1").LastRow, Unique:=False


End Sub

我做错了什么?

1 个答案:

答案 0 :(得分:0)

似乎offset * ProgressBar1.Maximum的值大于Integer.MaxValue(2147483647)。

您可以通过以不同顺序执行计算来避免溢出:

bWorker.ReportProgress(CType(offset / fileStream.Length * ProgressBar1.Maximum, Integer))

恰好CType(x,Integer)可以缩短为CInt(x),所以你可以写更短的内容:

bWorker.ReportProgress(CInt(offset / fileStream.Length * ProgressBar1.Maximum))