Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
996to1000
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

Code zu langsam

Code zu langsam
05.08.2008 08:05:00
Alex
Folgendes Problem:
Dim Zelle
Application.ScreenUpdating = False
For Each Zelle In Range("a21:a268")
If Zelle.Value = 2 Then
Zelle.EntireRow.Hidden = True
Else
Zelle.EntireRow.Hidden = False
End If
Next
Application.ScreenUpdating = True
End Sub
Diesen Befehl und ähnliche Befehle setze ich oft ein, entweder bei
Private Sub Worksheet_Change(ByVal Target As Range) oder bei
Private Sub Worksheet_Activate()
Der Code funktioniert auch einwandfrei in Punkto zeitlicher Performance,
wenn ich allerdings einen Ausdruck gemacht habe verzögert sich das Prozedere drastisch
und ist somit nahe zu nicht anzuwenden.
Wie kann ich meinen Code verändern, dass er schneller wird.
Hat jemand eine Idee?
Vielen Dank für Deine Hilfe!
Gruß
Alex

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code zu langsam
05.08.2008 08:24:00
Hajo_Zi
Hallo Alex,
warum prüfst Du immer alle Zeilen. Prüfe nur die, die vereändert wurden.

AW: Code zu langsam
05.08.2008 08:29:00
Alex
Hallo Hajo,
danke für Deine Rückmeldung,
allerdings sind meine Kenntnise nicht ausreichend, um diesen Befehl umzuschreiben.
Kannst Du mir eine Anregung geben?
Danke
Alex

AW: Code zu langsam
05.08.2008 08:50:21
Alex
Danke Hajo,
Danke Dir erst einmal.
Gruß
PS: Bis ich eine genaue Rückmeldung geben kann lasse ich die Frage noch offen,
vielleicht hat noch jemand anderes einen anderen Ansatz.

AW: Code zu langsam
05.08.2008 09:12:57
mpb
Hallo Alex und Hajo,
ich habe den Code testweise in eine Worksheet_Activate-Prozedur eingebunden. Bei den wenigen Zellen, die abgearbeitet werden, ist die Laufzeit praktisch Null. Insofern kann ich mir nicht vorstellen, dass Hajo Vorschlag einen nennenswerten Performancezuwachs bringt.
Alex schreibt: "wenn ich allerdings einen Ausdruck gemacht habe verzögert sich das Prozedere drastisch
und ist somit nahe zu nicht anzuwenden". Das kann ich so nicht nachvollziehen. Vielleicht kannst Du eine Datei hochladen, bei der dieses Phänomen auftritt.
Gruß
Martin

Anzeige
AW: Code zu langsam
05.08.2008 10:48:00
Alex
Hallo Martin,
danke Dir für Deine Rückmeldungen.
Ich werde die Datei mit einer Größe von 12 MB
heute oder morgen hochladen.
Danke
Alex

AW: Code zu langsam
05.08.2008 10:54:02
Hajo_Zi
Hallo Alex,
aber nicht mittels Hochladen in diesem Forum, da gibt es ein maximum.
Ich würde solche Größe der Datei auch als frech ansehen, nicht jeder hat DSL.
Gruß Hajo

AW: Code zu langsam
05.08.2008 09:18:00
Rudi
hallo,

Sub tt()
Dim Zelle As Range, rngHidden As Range
Application.ScreenUpdating = False
For Each Zelle In Range("a21:a268")
If Zelle.Value = 2 Then
If rngHidden Is Nothing Then
Set rngHidden = Zelle
Else
Set rngHidden = Union(Zelle, rngHidden)
End If
End If
Next Zelle
Rows.Hidden = False
If Not rngHidden Is Nothing Then rngHidden.EntireRow.Hidden = True
Application.ScreenUpdating = True
End Sub


Gruß
Rudi

Anzeige
AW: Code zu langsam
05.08.2008 09:43:00
mpb
Hallo Rudi,
ich habe beide Codes laufen lassen und konnte keinen Unterschied in der Performance erkennen, beide brauchen auf meinem Rechner Null Sekunden. M.E. muss das Problem woanders liegen. Ich kann Alex' Hinweis darauf, das die Performanceprobleme nach einem "Ausdrucken" (von was?) auftreten, nicht richtig einordnen.
Gruß
Martin

AW: Code zu langsam
05.08.2008 10:47:16
Alex
Hallo Rudi,
Dein Code hat schon Besserung bewirkt.
Bei ersten Test ist die Perfomance um ca. 50% besser geworden?
Ich muss mal sehen wo ich die anderen Prozente noch her bekomme!
Werde mich dazu noch mal heute oder morgen melden.
Danke für Deinen Einsatz.
Alex

Anzeige
AW: Code zu langsam
05.08.2008 10:49:00
Alex
.

AW: Code zu langsam
05.08.2008 11:02:00
Daniel
Hi
wenn der Code nach dem Ausdrucken langsamer wird, dann sollteset du mal die ganze datei hochladen, weil nur an dem Code kann das nicht liegen, da müssen noch andere besonderheiten vorliegen.
allerdings verstehe ich nicht, warum du hier nicht einfach den Autofilter einsetzt:

Range("A20:A268").AutoFilter Field:=1, Criteria1:="2", Operator:=xlAnd, VisibleDropDown:=False


über die VisibleDropDown-Eigenschaft kannst du steueren, ob der AuswahlButton sichtbar ist. bei False ist er ausgeblendet und du hast den gleichen Effekt, wie wenn du die Zeilen normal ausblendest
wenn der Autofilter langsam ist, dann liegt das daran, daß du aufwendige Formeln im Blatt hast, die dann neu berechnet werden.
dann müsste man die Neuberechnung vorher auf Manuell setzen und hinterher wieder auf den alten Wert:


Dim Calc As Long
Calc = Application.Calculation
Application.Calculation = xlCalculationManual
Range("A8:A11").AutoFilter Field:=1, Criteria1:="2", Operator:=xlAnd, VisibleDropDown:=False
Application.Calculation = Calc


Gruß, Daniel

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige