Math 计算进度条的填充百分比

Math 计算进度条的填充百分比,math,excel,progress-bar,vba,Math,Excel,Progress Bar,Vba,我在Excel VBA中的用户窗体上设置进度条图像的worrect宽度时遇到问题 我有一个用户表单,表单上有一个标签和一个图像 图像的最大宽度为330 在从1到intNumberOfGetRows(在本例中为64)的循环中,我希望更新映像的width属性,以显示进度,因为大型记录集的每个1000条记录块都放入一个数组并写入csv文件 这是我的密码: For intRecord = 1 To intNumberOfGetRows + 1 ' outer loop ' put the

我在Excel VBA中的用户窗体上设置进度条图像的worrect宽度时遇到问题

我有一个用户表单,表单上有一个标签和一个图像

图像的最大宽度为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

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

谢谢你对如何改进这一点的任何建议


菲利普

你不需要那些100人在里面。您只希望您的进度显示您完成了(在您的示例中)总数的13/64,总数是330,因此您只需要计算330*(13/64):


330*(intRecord/intNumberOfGetRows)

另一个提示:不要只使用标签,还可以使用文本框来提供良好的效果。看这个例子啊,但是我的图像有一个从浅蓝色到深蓝色的渐变效果,看起来非常漂亮:)