math - 计算进度条的百分比填充

标签 math excel progress-bar vba

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

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

图像的最大宽度为 330。

在从 1 到 intNumberOfGetRows(在本例中为 64)的循环中,我想更新图像的 width 属性以显示进度,因为大型记录集的每个 1000 条记录 block 都放入数组中并写入 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)

关于math - 计算进度条的百分比填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14956247/

相关文章:

python - 计算给定范围内的完美正方形、完美立方体等的数量?

c# - 更快的 Log2Ceil

sql-server - 复制超过 100 列时,excel vba copyfromrecordset 变慢

Android视频播放器自定义控制面板

html - 如何将缓冲区时间范围数据从 HTML5 视频播放器引用映射到进度条?

javascript - 试图阻止 Bootstrap 轮播在悬停时暂停

给定两个函数的Javascript找到交集

python - 检查列表元素接近什么值的最佳方法是什么?

vba - 在将数据从一张表复制到另一张表的 excel VBA 代码中停止数据复制

excel - 由其他单元格的内容定义的单元格地址