Anzeige
Archiv - Navigation
1508to1512
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
Inhaltsverzeichnis

Makro sehr langsam

Makro sehr langsam
23.08.2016 08:45:17
Frank
Hallo Zusammen und einen schönen Guten Morgen!
Wer kann rein anhand des Makro's erkennen, warum die Ausführung sehr lange dauert?
Private Sub CommandButton4_Click()
Application.ScreenUpdating = False
For lng = 7 To 37
For b = 5 To 73 Step 6
Sheets("Urlaubsplanung").Cells(lng, b) = ""
Next b
Next lng
For lng = 7 To 37
For lng1 = 7 To 5850
For b = 2 To 73 Step 6
If Sheets("Urlaubsplanung").Cells(lng, 106) > Sheets("Urlaubsplanung").Range("BP37")  _
Then Exit For
If Sheets("Urlaubsplanung").Cells(lng1, 106) = Sheets("Urlaubsplanung").Cells(lng, b)  _
Then
Sheets("Urlaubsplanung").Cells(lng, b + 3) = Sheets("Urlaubsplanung").Cells(lng1,  _
109)
End If
Next b
Next lng1
Next lng
Application.ScreenUpdating = True
End Sub
Ich hoffe jemand weiß Rat.
Danke im Voraus!
Gruß Frank H.

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro sehr langsam
23.08.2016 08:58:03
ChrisL
Hi Frank
Schade sieht man die Datei nicht.
Wenn du viele Formeln verwendest, könnte Berechnung abschalten helfen:
Sub t()
Application.Calculation = xlCalculationManual
' Dein Code
Application.Calculation = xlCalculationAutomatic
End Sub

Ansonsten prüfe ob du nicht auf For...Next Schleifen verzichten kannst. Wenn ich den Code richtig interpretiere, suchst du mit der Schleife bestimmte Werte. Könnte man vielleicht mit =VERGLEICH() (in VBA "Match") effizienter machen.
Zum Warum: 1. Schleife: ca. 30 Durchläufe, 2. Schleife ca. 5800 Durchläufe, 3. Schleife ca. 10 Durchläufe
30*5800*10 = 1,74 Mio. Durchläufe
cu
Chris
Anzeige
AW: Makro sehr langsam
23.08.2016 09:08:08
Frank
Hallo Chris!
Danke für deine schnelle Antwort! Formeln verwende ich nicht!
Aber kannst du mir das mit dem VERGLEICH in VBA vielleicht erklären, was ich da tun soll?
Danke und Gruß Frank H.
AW: Makro sehr langsam
23.08.2016 09:38:30
ChrisL
Hallo Frank
Es ist schwierig nur anhand des Codes nachzuvollziehen, was dieser bezweckt, wo du was suchst etc.
Darum nur eine theoretische Antwort:
=VERGLEICH(Suchkriterium;Suchmatrix;Vergleichstyp)
in VBA:
Application.Match(Suchkriterium, Suchmatrix, Vergleichstyp)
cu
Chris
AW: Makro sehr langsam
23.08.2016 09:48:29
Frank
Hallo Chris!
Das hilft! Danke!
Gruß Frank H.
AW: Makro sehr langsam
23.08.2016 10:29:08
Daniel
Hi
wenn du einen Zellwert in eine Zelle einträgst oder änderst, dann ist das für Excel sehr Zeitaufwendig.
bei jeder Zellwertänderung muss es prüfen, ob die es Formeln gibt, die aufgrund dieser Zellwertänderung neu berechnet werden müssen und es muss es muss prüfen, ob die geänderte Zelle im angezeigten Bereich liegt und dann den Bildschirm ändern.
daher sollte man versuchen, Zellen möglichst nicht einzeln, sondern immer als Block zu ändern, sofern das möglich ist, Weil Excel dann die o.g. Aufgaben für alle Zellen gemeinsam ausführen kann und nicht für jede Zelle einzeln.
das hier

For lng = 7 To 37
For b = 5 To 73 Step 6
Sheets("Urlaubsplanung").Cells(lng, b) = ""
Next b
Next lng
lässt sich so beschleunigen:
for b = 5 to 73 Step 6
Sheets("Urlaubsplanung").Cells(7, b).Resize(31, 1).ClearContents
Next

noch besser wäre es so, ganz ohne Schleife:
With Sheets("Urlaubsplanung")
intersect(.Range("7:37"), Union(Columns(5), Columns(11), columns(17), Columns(23), ..., _
Columns(73))). clearContents
End With
für den zweiten Teil müsstest du nach diesem Schema die entsprechende Formel (hat dir Chris ja gezeigt) in die Zellen eintragen.
Wichtig ist, wie schon gesagt, dass du immer versucht so viele Zellen wie mögich gemeinsam zu ändern und nicht jede Zelle einzeln.
Wenn jede Zelle einen anderen Wert bekommen soll, dann muss man versuchen eine für alle Zellen passende Formel zu finden, so dass diese dann in alle Zellen gleichzeitig geschrieben werden kann.
Gruß Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige