プログレスバーの使用方法については、 stackoverflowから読んでいます。進捗インジケータ、vbaで応答しなくなる
これはうまくいきますが、6%の短い時間が経過した後、23行目の14行目には応答がないと表示され、ループが終了するまで続きます。
だから私はそれがvbmodeless実行しています:
ProgressBar.Show vbModeless
ProgressBar.Label_WhatsGoingOn.Caption = "Reading data from database.."
projectNumber = "32966"
docOutArray = Post.helpRequest("xdnjgjrdin.asp?Dok4=" & projectNumber)
If CPearson.IsArrayEmpty(docOutArray) Then
MsgBox "No document registered in database!"
End If
ProgressBar.Label_WhatsGoingOn.Caption = "Creating Docout.."
Set doc_ = NEwDocOut.createDocOutDocument(projectNumber)
numOfRows = UBound(docOutArray, 1)
For i = LBound(docOutArray, 1) To numOfRows
ProgressBar.Label_WhatsGoingOn.Caption = "Creating Row.."
sPercentage = (i/numOfRows) * 100
ProgressBar.progress (sPercentage)
私のプログレスバーコード:
Private Sub UserForm_Initialize()
Me.Text.Caption = "0% Completed"
End Sub
Public Sub progress(pctCompl As Single)
Me.Text.Caption = Format(pctCompl, "##") & "% Completed"
Me.Bar.Width = pctCompl * 2
Me.Repaint
DoEvents
End Sub
これがなぜ起こるか任意のアイデア?
私は「DoEvents関数は、」すべてのイベントを考えて考えて、ではありませんプログレスバーを更新するイベントだけです。一般的にこれは問題ではありませんが、他のボタン/フォームが開いている可能性がある場合は、それらのクリックが既に実行中のコードに干渉しないように注意する必要があります。 – Shimeon
@skatunこの回答がうまく機能していますか? – User632716
はい、@tomprestonそれはちょっと問題です。問題は現在、プログレスバーがバックグラウンドで取得され、プログレスバーがすでに存在しているかsthであるためにプログレスバーが表示されないというエラーが発生することがあります。私はこれを今見ている。 – skatun