Math 计算进度条的填充百分比
我在Excel VBA中的用户窗体上设置进度条图像的worrect宽度时遇到问题 我有一个用户表单,表单上有一个标签和一个图像 图像的最大宽度为330 在从1到intNumberOfGetRows(在本例中为64)的循环中,我希望更新映像的width属性,以显示进度,因为大型记录集的每个1000条记录块都放入一个数组并写入csv文件 这是我的密码: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
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)
另一个提示:不要只使用标签,还可以使用文本框来提供良好的效果。看这个例子啊,但是我的图像有一个从浅蓝色到深蓝色的渐变效果,看起来非常漂亮:)