Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1900to1904
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

Langsames Makro

Langsames Makro
12.10.2022 09:34:17
Marc
Hallo zusammen
Ich habe in einer Arbeitsmappe ein kleines Makro geschrieben, welches gewisse Zeilen ausblenden soll. Es werden immer die Zeilen ausgeblendet, bei denen in der Spalte 3 der Wert 0 zu finden ist (dort findet eine Berechnung statt). Das Makro benötigt 2 Minuten um durchzulaufen, was mich schlicht viel zu lange dünkt bei der Anzahl von Zeilen. Mache ich hier was falsch? Sorry, die Datei ist zu gross, aber es sind lediglich 700 Zeilen ausgefüllt.
Mit herzlichem Dank und Gruss
Marc

Sub nur_nicht_erledigte()
ActiveSheet.Unprotect
' spalten anpassen: bei cells(reihe,Spalte) hinter dem Komma Spaltenindex ändern
For i = 1 To Cells(999, 3).End(xlUp).Row
If Cells(i, 3).Value = 0 Then
Rows(i).Hidden = True
End If
Next
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowSorting:=True, AllowFiltering:=True, _
AllowUsingPivotTables:=True
End Sub

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Langsames Makro
12.10.2022 09:40:47
Der
Hallo,
warum verwendest Du hierfür nicht den Autofilter?
Gruß
Michael
AW: Langsames Makro
12.10.2022 09:50:35
ralf_b
Versuchs mal damit.

Sub nur_nicht_erledigte()
Dim rng As Range, i&
ActiveSheet.Unprotect
Application.Calculation = xlCalculationManual
' spalten anpassen: bei cells(reihe,Spalte) hinter dem Komma Spaltenindex ändern
For i = 1 To Cells(999, 3).End(xlUp).Row
If Cells(i, 3).Value = 0 Then
If rng Is Nothing Then
Set rng = Rows(i)
Else
Set rng = Union(rng, Rows(i))
End If
End If
Next
If Not rng Is Nothing Then rng.Hidden = True
Application.Calculation = xlCalculationAutomatic
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowSorting:=True, AllowFiltering:=True, _
AllowUsingPivotTables:=True
End Sub

Anzeige
AW: Langsames Makro
12.10.2022 10:04:13
Marc
Hallo Michael
Danke für dein Feedback. Das wäre natürlich eine Idee, wieso nicht. Trotzdem bleibt die Frage, wieso das Ding so langsam durchläuft. Jetzt habe ich die Datei nochmals abgespeckt, damit ich sie raufladen kann, dann kannst du mal testen, wenn du Lust hast :)
https://www.herber.de/bbs/user/155613.xlsm
Gruss
Marc
AW: Langsames Makro
12.10.2022 10:18:12
Daniel
Hi
Könnte an der Automatischen Neuberechnung und den Events liegen.
Da es Funktionen gibt, die auf ausgeblendet Zellen reagieren (Teilergebnisse, Aggregat) muss Excel bei jedem Ausblenden einer Zeile prüfen, ob Formeln mit solchen Funktionen vorliegen und wenn ja, diese neu berechnen.
Da du jede Zeile einzeln ausblendet, jedesmal neu.
Ähnliches bei den Events.
Ebenso muss Excel den Bildschirm neu zeichnen, wenn du eine Zeile ausbendest.
Um das zu beschleunigen gibt es zwei Wege:
a) man blendet nicht jede Zeile einzeln aus, sondern alle zusammen auf einmal. Dann muss Excel diese Aktionen nicht jedesmal für jede Zeile ausführen, sondern einmalig im Block für alle Zeilen.
Das passiert beim Autofilter oder bei den anderen gezeigten Makros.
b) du deaktiviert die Ausführung dieser Aktionen:

Application.Calculation = xlcalculationmanual
Application.EnableEvents = False
Applications.ScreenUpdating = False
Hinterher das Einschalten nicht vergessen.
Gruß Daniel
Anzeige
AW: Langsames Makro
12.10.2022 16:44:30
Marc
Hi Daniel
Super, probiere ich mal aus, danke für das Feedback, interessant.
Grüess
Marc
AW: Langsames Makro
12.10.2022 09:54:36
GerdL
Dacore Michael,
aber Marc, das Makro läuft bei mir in einer leeren Tabelle (also alle Value=0) über 1000 Zeilen unter einer Sekunde durch.
Die Verzögerung von zwei Minuten wird woanders verursacht.
Gruß Gerd
AW: Langsames Makro
12.10.2022 10:15:50
Marc
Hallo Gerd
Wow, nicht mal 1 Sekunde? OK, dann forsche ich mal weiter, wo die Verzögerung liegen könnte. Bei mir immer noch derselbe lahme Vorgang, auch bei einer leeren Tabelle.
Mit Gruss und Dank
Marc
AW: Langsames Makro
12.10.2022 10:04:30
Daniel
Hi
Einfach denn Autofilter anwenden, wäre hier die einfachste Alternative.
Wenn der Autofilter nicht möglich ist, kann man auch die betroffenen Zeilen in einer Hffdpalte markieren und dann gemeinschaftlich ausblenden statt jede Zelle einzeln.

Dim rng as Range
With ActiveSheet.UsedRange
.EntireRow.Hidden = False
With .Columns(.Columns.Count + 1)
.FormulaR1C1 = "=If(RC3=0;1,"""")"
If Worksheetfunction.Sum(.cells) > 0 then
Set rng = .SpecialCells(xlcelltypeformulas, 1)
.clearcontents
rng.entirerow.hidden = true
Else
.clearcontents
End if
End With
End with

Anzeige
AW: Langsames Makro
12.10.2022 10:18:54
Marc
Hallo zusammen
Danke für die Vorschläge. Ich werde den Filter anwenden, so wie von euch vorgeschlagen.
Mit herzlichem Dank und Gruss aus der Schweiz
Marc

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige