我无法在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
看起来好像忘记了我的基本数学理论,这是最好的方法吗?
感谢有关如何改进此
的任何建议菲利普
答案 0 :(得分:3)
你不需要那些100。你只希望你的进度显示你已经完成(在你的例子中)总数的13/64,总数是330,所以你需要计算的只是330 *(13/64):
330 * (intRecord / intNumberOfGetRows)