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
数学の基本的な理論を忘れてしまったようですが、それが最善の方法ですか?
これを改善する方法についての提案に感謝します
フィリップ