Ich habe gelesen stackoverflow auf wie Fortschrittsbalken zu verwenden.Fortschrittsanzeige, reagiert nicht in VBA
Es funktioniert gut, aber nach einer kurzen Zeit 6%, Zeile 14 in meinem Array von 235 sagt es nicht reagiert, und dies bis zum Ende der Schleife.
Also ich laufe es 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)
Mein progressbar Code:
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
Irgendwelche Ideen, warum dies geschieht?
Ich denke "DoEvents" alle Ereignisse betrachtet, nicht nur die Ereignisse, die den Fortschrittsbalken aktualisieren. Im Allgemeinen ist dies kein Problem, aber wenn Sie andere Schaltflächen/Formulare haben, die geöffnet werden können, auf die die Leute klicken könnten, sollten Sie Vorkehrungen treffen, um sicherzustellen, dass diese Klicks Ihren bereits laufenden Code nicht beeinträchtigen. – Shimeon
@skatun Haben Sie diese Antwort gefunden? – User632716
Ja, @tompreston es funktioniert irgendwie, das Problem ist jetzt, dass manchmal die Fortschrittsbalken im Hintergrund und manchmal der Code schlägt fehl, sagend, dass Fortschrittsbalken nicht vbmodeless angezeigt werden kann, weil es bereits existiert oder etw. Ich untersuche das gerade jetzt. – skatun