Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Code zu langsam!

Forumthread: 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ß

Anzeige

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



Anzeige
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

Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige