1

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

数学の基本的な理論を忘れてしまったようですが、それが最善の方法ですか?

これを改善する方法についての提案に感謝します

フィリップ

4

1 に答える 1

3

そこにそれらの100は必要ありません。進行状況を示して (この例では) 合計の 13/64 を表示したいだけで、合計は 330 なので、計算する必要があるのは 330 * (13/64) だけです。

330 * (intRecord / intNumberOfGetRows)

于 2013-02-19T11:26:52.867 に答える