Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
900to904
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
900to904
900to904
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Code zu langsam!

Code zu langsam!
28.08.2007 07:49:33
Snewi
Hallo
ich benutze folgenden Code um Zeilen in denen 0 steht auszublenden!

Sub Ausblenden_Zeilen()
Dim i As Long
Sheets("Bericht").Select
Application.EnableEvents = False
For i = 17 To 395
If Cells(i, 5).Value = 0 Then
Rows(i).Hidden = True
Else
Rows(i).Hidden = False
End If
Next i
Application.EnableEvents = True
End Sub


Nun benötigt Excel leider fast 3 Minuten um dieses auszuführen weil wohl für jede Zeile noch andere Berechnungen laufen oder wie auch immer!
Kann man die Ausführung vielleicht verschnellern oder einen anderen Code nehmen?
Gruß

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code zu langsam!
28.08.2007 08:01:00
Hajo_Zi
Hallo ,
Berechnungen haben keinen einfluss.
in VBA kann zu 99,9% auf select verzichtet werde.

Option Explicit
Sub Ausblenden_Zeilen()
Dim i As Long
Application.EnableEvents = False
For i = 17 To 395
Rows(i).Hidden = Sheets("Bericht").Cells(i, 5).Value = 0
Next i
Application.EnableEvents = True
End Sub



AW: Code zu langsam!
28.08.2007 09:37:05
Snewi
Dauert leider immer noch ewig der durchläuft jede einzelne Zeile total langsam :-(
Mhh mist!!

AW: Code zu langsam!
28.08.2007 09:46:00
Heiko
Hallo,
dann z.B. so:

Sub Ausblenden_Zeilen()
Dim i As Long
With Application
.EnableEvents = False
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
With Sheets("Bericht")
For i = 17 To 395
If .Cells(i, 5).Value = 0 Then
.Rows(i).Hidden = True
Else
.Rows(i).Hidden = False
End If
Next i
End With
With Application
.EnableEvents = True
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
End With
End Sub


Gruß Heiko
PS: Rückmeldung wäre nett !

Anzeige
AW: Code zu langsam!
28.08.2007 10:04:00
Snewi
Hallo
der Hammer es klappt soweit :-) total schnell!!
liegt es an Application.Calculation?
Gruß

Noch schneller ^^
28.08.2007 12:30:00
Klaus

Sub nochschneller()
Dim rTMP As Range
Dim r As Range
Set rTMP = Nothing
With Application
.EnableEvents = False
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
With Sheets("Bericht")
For Each r In .Range("E17:E395")
If r.Value = 0 Then
If rTMP Is Nothing Then
Set rTMP = r
Else
Set rTMP = Union(rTMP, r)
End If
End If
Next r
If Not rTMP Is Nothing Then rTMP.EntireRow.Hidden = True
End With
With Application
.EnableEvents = True
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
End With
End Sub


Blendet einmalig alle Zeilen auf einen Schlag aus statt jede einzeln. Der Geschwindigkeitszuwachs liegt vor allemm am ScreenUpdating.
Grüße,
Klaus M.vdT.

Anzeige
AW: Code zu langsam!
29.08.2007 00:17:00
Daniel
Hi
kürzer, und bei der angegebenen Zeilenzahl immer noch sehr schnell.

Sub Ausblenden()
application.screenupdating = false
sheets("Bericht").select
cells.entirerow.hidden = false
columns(1).insert
range("A17:A395").formulalocal="=wenn(F17=0;wahr;1)
columns(1).specialcells(xlcelltypeformulas,4).entirerrow.hidden = true
columns(1).delete
application.screenupdating = true
End Sub


Gruß, Daniel
ps hab grad kein Excel am Rechner, daher nicht getestet und keine Garantie für Schreibfehler

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige