Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1640to1644
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

Lange Reaktionszeit bei ROWS Hidden

Lange Reaktionszeit bei ROWS Hidden
04.09.2018 07:57:22
Climbi
Hallo
mit folgendem Code durchsuche ich ein Excel Blatt und blende alle Zeilen aus,
bei welchem das Wort nicht vorkommt.
Früher ist das mal sehr schnell gegangen, aber seit einem Excel Update ist das ganze brutal langsam.
Die extreme Zeit kommt von "Rows(Zeile).Hidden = True"
Wenn ich das "Hidden" ausblende dauert die SUB bei 4000 Zeilen ca. 2 Sekunden.
Ist das Hidden aktiv dauert es ca. 5 Minuten.
Ich hoffe, es hat jemand eine Idee
If TextBoxSuchbegriff.Value = "" Then Exit Sub
LetzteZeile = LastRow("Störungsliste", 1) + 2
'Bildschirmaktualisierung sperren
Application.ScreenUpdating = False
'Von Zeile 2 bis zur letzten Zeile
For Zeile = 2 To LetzteZeile
For Spalte = 1 To Spaltenende
Suchtext = UCase(Me.TextBoxSuchbegriff.Text)
Zellentext = UCase(Cells(Zeile, Spalte).Value)
Find = InStr(Zellentext, Suchtext)
If Find > 0 Then
Gefunden = True
End If
Next
If Gefunden <> True Then
Rows(Zeile).Hidden = True
End If
Gefunden = False
Next
Application.ScreenUpdating = True

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Lange Reaktionszeit bei ROWS Hidden
04.09.2018 09:04:57
Daniel
HI
die Lösung ist, nicht jede Zeilen einzeln auszublenden, sondern alle Zeilen auf einmal.
hierzu sammelt man alle Zeilen, die ausgeblendet werden müssen in einer Range-Variablen mit der Funktion UNION
Dim Ausblendebereich As Range
If TextBoxSuchbegriff.Value = "" Then Exit Sub
LetzteZeile = LastRow("Störungsliste", 1) + 2
Suchtext = UCase(Me.TextBoxSuchbegriff.Text)
Application.ScreenUpdating = False
Cells.EntireRow.Hidden = False
For Zeile = 2 To LetzteZeile
For Spalte = 1 To Spaltenende
Zellentext = UCase(Cells(Zeile, Spalte).Value)
Find = InStr(Zellentext, Suchtext)
If Find = 0 Then
If Ausblendebereich Is Nothing Then
Set Ausblendebereich = Rows(Zeile)
Else
Set Ausblendebereich = Union(Ausblendebereich, Rows(Zeile))
End If
Exit For
End If
Next
Next
If Not Ausblendebereich Is Nothing Then
Ausblendebereich.EntireRow.Hidden = True
End If
Application.ScreenUpdating = True
Gruß Daniel
Anzeige
AW: Lange Reaktionszeit bei ROWS Hidden
04.09.2018 11:15:04
Climbi
Hallo Daniel,
vielen Dank für Deinen Tipp.
Das Prinzip hat funktioniert, es hat sich nur ein kleiner Fehler eingeschlichen
Vor das "Exit For" muss noch ein Else, ansonsten wird alles ausgeblendet
Jetzt geht es super schnell.
Vielen Dank nochmals.
If Find = 0 Then
If Ausblendebereich Is Nothing Then
Set Ausblendebereich = Rows(Zeile)
Else
Set Ausblendebereich = Union(Ausblendebereich, Rows(Zeile))
End If
Else
Exit For
End If

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige