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

Zeilen ausblenden sehr langsam

Zeilen ausblenden sehr langsam
06.11.2013 15:32:41
Timo
Hallo,
mit folgendem Code blende ich Zeilen aus die den Wert "0" haben.
Es funktioniert. allerdings sehr langsam.
Kann man das irgendwie beschleunigen?
Private Sub CheckBox7_Click()
Dim i As Long
With Application
.ScreenUpdating = False
'.Calculation = xlCalculationAutomatic
.EnableEvents = False
End With
'Alle ausgeblendeten Zeilen einblenden
Cells.EntireRow.Hidden = False
'leere Zeilen ausblenden
For i = 11 To 80
If Cells(i, 4).Value = "0" And Cells(i, 8).Value = "0" And Cells(i, 10).Value = "0" Then
Rows(i).Hidden = True
End If
Next i
With Application
.ScreenUpdating = True
'.Calculation = xlCalculationAutomatic
.EnableEvents = True
End With
End Sub

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen ausblenden sehr langsam
06.11.2013 15:38:48
Hajo_Zi
benutze Autofilter.

AW: Zeilen ausblenden sehr langsam
06.11.2013 15:55:00
Timo
Hallo Hajo,
danke für die schnelle Antwort.
Allerdings weiß ich nicht wie ich bei drei Filtern prüfen soll ob nicht einer doch größer oder kleiner 0 ist.
Gibt es keine Möglichkeit das Ausblenden zu beschleunigen?
Gruß
Timo

AW: Zeilen ausblenden sehr langsam
06.11.2013 15:57:37
Hajo_Zi
im ersten Beitrag Stand =0. Darauf habe ich geantwortet.
Gruß Hajo

AW: Zeilen ausblenden sehr langsam
06.11.2013 16:09:49
Luschi
Hallo Timo,
Du mußt zu Beginn die automatische Berechnung ausschalten und am ende wieder einschalten
.Calculation = xlCalculationManual
'Deine Code
.Calculation = xlCalculationAutomatic
da seit Excel 2003 jedes Zeilenein/-ausblenden eine Neuberechnung der Formeln bewirkt.
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Zeilen ausblenden sehr langsam
06.11.2013 16:16:02
Timo
Hallo Luschi,
danke für die Antwort.
Das habe ich schon probiert.
Allerdings blendet es mir die Zeilen mit ="0" nicht aus?
Hier mein Code
Private Sub CheckBox7_Click()
'Fertigung
Dim i As Long
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
.EnableEvents = False
End With
'Alle ausgeblendeten Zeilen einblenden
Cells.EntireRow.Hidden = False
'Bereich durchsuchen
If Sheets("Satz").CheckBox7.Value = True Then
For i = 11 To 42
Cells(i, 2) = Right(Cells(i, 2), 5)
Next i
Else
For i = 11 To 42
Cells(i, 2) = "1" & Right(Cells(i, 2), 5)
Next i
End If
'leere Zeilen ausblenden
For i = 11 To 80
If Cells(i, 4).Value = "0" And Cells(i, 8).Value = "0" And Cells(i, 10).Value = "0" Then
Rows(i).Hidden = True
End If
Next i
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
.EnableEvents = True
End With
End Sub

Anzeige
AW: Zeilen ausblenden sehr langsam
06.11.2013 16:18:20
Timo
Ich habe es jetzt so geändert und es scheint zu funktionieren.
Private Sub CheckBox7_Click()
'Fertigung
Dim i As Long
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
.EnableEvents = False
End With
'Alle ausgeblendeten Zeilen einblenden
Cells.EntireRow.Hidden = False
'Bereich durchsuchen
If Sheets("Satz").CheckBox7.Value = True Then
For i = 11 To 42
Cells(i, 2) = Right(Cells(i, 2), 5)
Next i
Else
For i = 11 To 42
Cells(i, 2) = "1" & Right(Cells(i, 2), 5)
Next i
End If
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
.EnableEvents = True
End With
'leere Zeilen ausblenden
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
.EnableEvents = False
End With
For i = 11 To 80
If Cells(i, 4).Value = "0" And Cells(i, 8).Value = "0" And Cells(i, 10).Value = "0" Then
Rows(i).Hidden = True
End If
Next i
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
.EnableEvents = True
End With
End Sub

Anzeige
AW: Zeilen ausblenden sehr langsam
06.11.2013 16:48:18
Rudi
Hallo,
per Hilfsspalte:
  Rows.Hidden = False
With Range("aaa11:aaa80")
.FormulaR1C1 = "=if(sum(rc4,rc8,rc10),"""",#n/a)"
On Error Resume Next
.SpecialCells(xlCellTypeFormulas, xlErrors).EntireRow.Hidden = True
On Error GoTo 0
.ClearContents
End With

Gruß
Rudi

auf "Schleife" verzichten!
06.11.2013 16:57:54
Klaus
Hallo Timo,
das verzichten auf Schleifen bringt einen enormen Geschwindigkeitsvorteil! Hajo schlug schon den Autofilter vor, das ist natürlich eine Möglichkeit.
Hier mal eine Alternative, die alle Nuller-Zeilen per Formel ermittelt und dann auf einen Schlag ausblendet (braucht eine Hilfsspalte, in der nichts stehen darf!):
Sub Test()
Dim i As Long
'Spalten/Zeilenangaben als Variablen
Const FirstRow As Long = 11       'von dieser Zeile
Const LastRow As Long = 80        'bis zu dieser Zeile
Const SpalteLeer As Long = 30     'freie Spalte! hier darf NICHTS stehen!
Const SpalteEins As Long = 4      'erste Such-Spalte
Const SpalteZwei As Long = 8      'zweite Such-Spalte
Const SpalteDrei As Long = 10     'dritte Such-Spalte
With Application
.ScreenUpdating = False
'.Calculation = xlCalculationAutomatic
.EnableEvents = False
End With
'Alle ausgeblendeten Zeilen einblenden
Rows(FirstRow & ":" & LastRow).Hidden = False
'Zeile leer? Durch Formel ermitteln
Range(Cells(FirstRow, SpalteLeer), Cells(LastRow, SpalteLeer)).FormulaR1C1 = _
"=1/(RC" & SpalteEins & "+RC" & SpalteZwei & "+RC" & SpalteDrei & ")"
'Trick 17: 1/0 ergibt einen Fehler! Alle Zeilen mit "Fehler" ausblenden
Columns(SpalteLeer).SpecialCells(xlCellTypeFormulas, 16).EntireRow.Hidden = True
'und natürlich die Hilfsspalte wieder löschen
Columns(SpalteLeer).ClearContents
With Application
.ScreenUpdating = True
'.Calculation = xlCalculationAutomatic
.EnableEvents = True
End With
End Sub
Bei deinen 69 Zeilen bringt das noch nicht viel, aber mit der Systematik kann man auch große Bereiche schnell ausblenden. Noch mehr Zeit gewinnst du, wenn du die Hilfsformel nicht im Makro erstellst, sondern einfach im Blatt stehen lässt (und die Spalte ausblendest?).
Bei sehr großen Bereichen sollte man aber doch besser zu einer Autofilter-Lösung greifen.
mfg,
Klaus M.vdT.
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige