我在 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
看起来我好像忘记了我的基本数学理论,那是最好的方法吗?
感谢您提供有关如何改进此问题的任何建议
菲利普