计算进度条的填充百分比

时间:2013-02-19 11:23:11

标签: excel math excel-vba progress-bar vba

我无法在Excel VBA中的用户窗体上设置进度条图像的正确宽度。

我有一个用户表单,在该表单上是标签和图像。

图像的最大宽度为330。

在我从1到intNumberOfGetRows(在本例中为64)的循环中,我想更新图像的width属性以显示进度,因为大记录集的每个1000记录块都放在一个数组中并写入csv文件。

这是我的代码:

  For intRecord = 1 To intNumberOfGetRows + 1 ' outer loop

    ' put the data in an array and print to file
    arrContacts = adoRsMailshotAccConData.GetRows(intRows)

    With fsOutputFile

        For iDx = 0 To UBound(arrContacts, 2)
            .WriteLine arrContacts(0, iDx)
        Next

        '.Close
    End With

    sMsg = "Number " & intRecord & " of " & intNumberOfGetRows
    Application.StatusBar = sMsg

    With frmProgress
        .lblProgress.Caption = sMsg
        .imgProgress.Width = (intRecord / intNumberOfGetRows) * 330
        DoEvents
        .Repaint
    End With

    DoEvents
Next

当intRecord为13时,那应该是填充图像的20%左右,这意味着图像的宽度应该是66,所以我想出了这个:

330 *(intRecord / intNumberOfGetRows * 100)/ 100

看起来好像忘记了我的基本数学理论,这是最好的方法吗?

感谢有关如何改进此

的任何建议

菲利普

1 个答案:

答案 0 :(得分:3)

你不需要那些100。你只希望你的进度显示你已经完成(在你的例子中)总数的13/64,总数是330,所以你需要计算的只是330 *(13/64):

330 * (intRecord / intNumberOfGetRows)