Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1404to1408
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
VBA-ProgressBar hängt sich (kurz) auf
27.01.2015 09:35:40
Lisa
Hallo liebe Helfenden :-)
Ich habe ein kleines Problem und hoffe mal wieder, dass ihr mir weiterhelfen könnt.
Ich habe eine relativ große Excel-Tabelle (160 Spalten, 120.000 Zeilen).
Nun lasse ich per VBA für 10 Spalten und alle 120.000 Zeilen einfache Berechnungen durchführen. Da dies etwas dauert habe ich mir mit einer Userform einen Fortschriftsbalken gebaut. Leider hängt sich der Fortschrittsbalken nach ca. 1/3 des Weges auf (im Userform Fenster steht "Keine Rückmeldung"). Nachdem die Berechnungen beendet sind, verschwindet das Fenster einfach (was es ja auch tun soll).
Hier ist mein Code (ja ich weiß, die Variablen sind noch nicht deklariert :-)):
Private Sub CommandButton1_Click()
i = 3
x = 0
Do While Cells(i, 1)  ""
Cells(i, 21) = WorksheetFunction.VLookup(Cells(i, 2), Sheets("Basis").[A2:V723], 3, False)
Cells(i, 23) = Cells(i, 2) & Cells(i, 15)
Cells(i, 24) = Round(Cells(i, 20) + Cells(i, 21) + Cells(i, 22), 2)
Cells(i, 26) = WorksheetFunction.VLookup(Cells(i, 2), Sheets("Basis").[A2:V915], 5, False)
If i = 3 Then x = 1
If i = 11250 Then x = 2
If i = 22500 Then x = 3
If i = 33750 Then x = 4
If i = 45000 Then x = 5
If i = 56250 Then x = 6
If i = 67500 Then x = 7
If i = 78750 Then x = 8
If i = 90000 Then x = 9
If i = 101250 Then x = 10
ProgressBar1.Max = 10
ProgressBar1.Min = 0
ProgressBar1.Value = x
i = i + 1
Loop
i = 3
Unload UserForm1
UserForm1.Hide
End Sub

Kann mir jemand weiterhelfen?!
Warum hängt sich die Userform nach ca. 1/3 auf und wie kann ich das beheben?
Herzlichen Dank und schöne Grüße
Lisa

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-ProgressBar hängt sich (kurz) auf
27.01.2015 09:53:26
Daniel
Hi
Excel ist halt so beschäfigt, dass es vergisst, sich beim Betriebssystem zurückzu melden.
Muss wohl ein Bug in den neuen Versionen sein.
Was man da jetzt machen kann, weiß ich auch nicht.
Du kannst aber deine Programm noch optimeren
momentan beschreibst du jede Zelle einzeln.
Das ist in VBA ein recht aufwendigiger Prozess.
schneller ist, wenn du beispielsweise die SVerweise und anderen Berechnungen direkt als Formel in die Zellen schreibst.
Hierbei kannst du alle Zellen einer Spalte gleichzeitig beschreiben und das geht dann schneller.
With ActiveSheet
With Range(.cells(1, 3), .Cells.SpecialCells(xlcelltypelastcell))
.Columns(21).FormulaR1C1 = "=VLookUp(RC2,Basis!R2C1:R723C3,3,false)"
.Columns(21).Formula = .Columns(21).Value
.Columns(23).FormulaR1C1 = "=RC2&RC15"
.Columns(23).Formula = .Columns(23).Value
für die weiteren Formeln dann analog
End with
End With
noch schneller wirds, wen du die Tabelle Basis aufsteigend sortierst und mit dem SVerweis mit 4. Parameter = WAHR arbeitest.
Gruß Daniel

Anzeige
AW: VBA-ProgressBar hängt sich (kurz) auf
27.01.2015 10:11:27
Lisa
Hallo Daniel,
danke für deine Hilfe.
Allerdings sollen tatsächlich Werte in die Zellen geschrieben werden und keine Formeln drin stehen.
Stehen in allen Zellen Formeln drin, ist die Datei fast nicht mehr zu verwenden. Wurde auch hier schon mal diskutiert:
https://www.herber.de/forum/archiv/1400to1404/t1402218.htm
Die Geschwindigkeit etc. stellt kein Problem dar, aber vielleicht findet sich noch eine Lösung für das"Aufhängen".
Den Tip mit der aufsteigenden Sortierung werde ich aber mal versuchen, danke!
Herzlichen Dank!

Anzeige
AW: VBA-ProgressBar hängt sich (kurz) auf
27.01.2015 10:44:25
Luschi
Hallo Lisa,
Daniel hat schon den Finger auf die Wunde gelegt - riesige Schleifendurchläufe, ohne dem
Betriebsystem die Change geben zu wollen, bestimmte und auch 'wichtigere' Arbeitsabläufe durchzuführen (Abgleich mit dem E-Mail-Server, Netzwerk-Zugriffe usw.).
Dein Makro hat in der Hierarchie des Betriebssystem nur das unterste Level und der Taskmanager nimmt sich das Recht, hier einzugereifen. Das Makro läuft dann zwar weiter, aber die Progreßbar im Formular wird nicht mehr bedient.
Dieses Konstrukt ist dabei auch ein 'NoGo'-Kriterium:

If i = 3 Then x = 1
If i = 11250 Then x = 2
If i = 22500 Then x = 3
If i = 33750 Then x = 4
If i = 45000 Then x = 5
If i = 56250 Then x = 6
If i = 67500 Then x = 7
If i = 78750 Then x = 8
If i = 90000 Then x = 9
If i = 101250 Then x = 10
Überlege mal, auch wenn in der 1. Zeile bereits 'i' im Bereich liegt, müssen alle andere Prüfungen immer noch ausgeführt werden - was für ein Luxus:
verwende hier die Option 'ElseIf' oder steige auf 'Select Case' um.
Außerdem ist der Befehl DoEvents' sehr nützlich (siehe Vba-Hilfe).
Gruß von Luschi
aus klein-Paris

Anzeige
AW: VBA-ProgressBar hängt sich (kurz) auf
27.01.2015 11:20:02
Lisa
Hallo Luschi,
danke für deine Hilfe!
Mit Einfügen des Befehls "DoEvents" hat sich das Problem erledigt!
Trotzdem danke für den Tipp bzgl. meines NoGo-Codes! Werde ich entsprechend umgestallten!
Ich bin ja schon froh das ich das hinbekommen habe :-D
Danke noch einmal!
Lisa

AW: VBA-ProgressBar hängt sich (kurz) auf
27.01.2015 11:05:23
daniel
Hi
Solange du eine Progressbar für sinnvollhälst, ist Geschwindigkeit ein Problem.
Dass Formeln bei dieser Datenmenge nicht sinnvoll sind, weiss ich. Deswegen folgt in meinem Makro nach dem Einfügen der Formel sofort das
Formula = .Value, welches die Formeln durch ihr Ergebnis ersetzt.
Gruß Daniel

Anzeige
AW: VBA-ProgressBar hängt sich (kurz) auf
27.01.2015 11:22:36
Lisa
Hallo Daniel,
ich hoffe ich strapaziere deine Geduld nicht wenn ich nun frage:
Ist das wirklich so viel Besser, wenn ich per VBA die Formeln in die Zellen schreibe und dann daraus gleich Werte mache? Also besser im Hinblick auf meine wohl nicht so tolle Schleife :-)
Falls das wirklich so viel besser ist, dann ändere ich das nämlich wirklich!
So oder so, danke für den Tip mit .Value
Schöne Grüße
Lisa

AW: VBA-ProgressBar hängt sich (kurz) auf
27.01.2015 11:31:13
daniel
Probieren es doch aus.
Gruss Daniel

133 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige