Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1608to1612
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

Codeoptimierung - Makro langsam

Codeoptimierung - Makro langsam
15.02.2018 17:04:32
Rilana
Hallo liebe Excelprofis,
ich habe ein Problem mit einem Makro (Excel 2016), bei dem ich euch um Hilfe bitten möchte:
Ich habe mir ein Makro zusammengebastelt, welches prüfen soll, ob in einem bestimmten Bereich (rd. 700 Zeilen) Werte eingetragen sind oder eine 0 steht und in diesem Fall die entsprechenden Zeilen aus- bzw. einblenden. Funktioniert von der Sache her auch, jedoch benötigt das Makro mal nur wenige Sekunden, mal jedoch mehrere Minuten. Habt ihr eine Idee, woran dieser Zeitunterschied liegen könnte bzw. wie ich den Code evtl. optimieren könnte?
Sub Anlage1_Auswerten()
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
.EnableEvents = False
End With
Dim i As Integer
Dim j As String
Dim k As String
j = Range("Anzahl_Fläche_1").Address(False, False)
k = left(j, 1)
Range("Anzahl_Fläche_1:Anzahl_Sonst_n").Select
For i = Selection.Cells(Selection.Cells.Count).Row _
To Selection.Cells(1).Row Step -1
If Cells(i, k).Value = 0 Or Cells(i, k).Value = "" Then
Rows(i).EntireRow.Hidden = True
End If
Next i
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
.EnableEvents = True
End With
End Sub
Anzahl_Fläche_1: Zelle F13
Anzahl_Sonst_n: Zelle F732
Wäre über jeden Tip dankbar...
Gruß Rilana

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Warum nicht Autofilter. o.w.T.
15.02.2018 18:12:51
Werner
AW: Codeoptimierung - Makro langsam
15.02.2018 19:50:46
Gerd
Moin Rilana!
Sub AF()
With ActiveSheet.Range("F12:F732")
.AutoFilter
.AutoFilter field:=1, Criteria1:=">0", Operator:=xlOr, Criteria2:="

cu Gerd
AW: Codeoptimierung - Makro langsam
16.02.2018 01:33:42
Daniel
Hi
Sollte das mit dem Autofilter aus irgend einem Grund nicht funktionieren, kann man die Sache auch so beschleunigen:
Man "sammelt die auszublendenden Zeilen in einer Variablen (mit UNION) und blendet am Schluss über diese Variable alle Zeilen zusammen aus.
Sub Anlage1_Auswerten()
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
.EnableEvents = False
End With
Dim i As Integer
Dim j As String
Dim k As String
Dim rng ss Range
j = Range("Anzahl_Fläche_1").Address(False, False)
k = left(j, 1)
Range("Anzahl_Fläche_1:Anzahl_Sonst_n").Select
For i = Selection.Cells(Selection.Cells.Count).Row _
To Selection.Cells(1).Row Step -1
If Cells(i, k).Value = 0 Or Cells(i, k).Value = "" Then
If rng ist Nothing Then
Set rng = rows(i)
Else
Set rng = Union(rng, rows(i))
End if
End If
Next i
If Not rng ist Nothing Then rng.entirerow.hidden = true
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
.EnableEvents = True
End With
End Sub
Gruß Daniel
Anzeige
AW: Codeoptimierung - Makro langsam
16.02.2018 08:19:37
Rilana
Guten Morgen,
vielen Dank für eure schnellen Antworten.
Den Filter kann ich leider nicht nutzen, da nachträglich ggf. einzelne Zeilen eingeblendet werden sollen.
Aber der Tip von Daniel war super, hat das Makro deutlich beschleunigt!!!
Nochmals vielen Dank an alle und habt ein schönes Wochenende,
viele Grüße Rilana.
P.S. Auch noch ein großes Lob an dieses Forum, habe hier schon hunderte von Lösungen auf meine Probleme gefunden... einfach nur großartig!!!!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige