计算进度条的百分比填充

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

我有一个用户窗体,在这个窗体上是一个标签和一个图像。

图像的最大宽度是330。

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

看起来好像我已经忘记了我的基本math理论,那么这是最好的方法吗?

感谢有关如何改善这一点的任何build议

菲利普

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

330 * (intRecord / intNumberOfGetRows)