Microsoft Excel

Herbers Excel/VBA-Archiv

Makro läuft zu langsam

Betrifft: Makro läuft zu langsam von: Andreas
Geschrieben am: 08.08.2014 10:20:04

Hallo Excelfreunde,

kann sich jemand von Euch mal diesen Code anschauen und mir sagen warum dieser Code in meiner ExcelDatei ca. 8MB sehr langsam läuft.

Sub DatenAusblenden()
Application.ScreenUpdating = False  'Bildschirm wird ausgeschaltet dami flackern verhindert  _
wird

Dim i As Integer
Dim VonSpalte As Integer
Dim BisSpalte As Integer
Dim StartDatum As Range
Dim EndDatum As Range
Dim StartMonat As Range
Dim EndMonat As Range

 
Set StartDatum = Range("C11")
Set EndDatum = Range("E9")
Set StartMonat = Range("B11")
Set EndMonat = Range("C11")

VonSpalte = 6 'Spalte "Zeitraum Von" als Nummer
BisSpalte = 7 'Spalte "Zeitraum Bis" als Nummer

    For i = 14 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row  'ab Zeile 14 bis   _
_
letzte belegte Zelle
     
        If Cells(i, VonSpalte) <= EndMonat And (Cells(i, BisSpalte) = "ohne" Or Cells(i, _
            BisSpalte) >= EndMonat) Or Cells(i, VonSpalte) >= StartMonat And (Cells(i,  _
BisSpalte) <= EndMonat) Then
            Rows(i).EntireRow.Hidden = False  'Zeile bleibt eingeblendet
        Else
            Rows(i).EntireRow.Hidden = True   'Zeile wird ausgeblendet
        End If
    Next i
    
    Application.ScreenUpdating = True  'Bildschirm wird wieder eingeschaltet
End Sub


Ich spreche diesen Code über einen Command Button im aktiven Sheet an.
Dieser Code selbst liegt im Modul1.
Es sollen im aktiven Sheet damit definierte Zeilen ausgeblendet werden.
So läuft das ganze ja genau so wie ich es haben möchte nur eben sehr langsam

Brauche echt dazu Hilfe

liebe Grüße Andreas

  

Betrifft: AW: Makro läuft zu langsam von: Daniel
Geschrieben am: 08.08.2014 10:26:42

Hi

hast du schon mal versucht, die Zeilen über den Autofilter ein- und auszublenden?
das ist in der Regel viel schneller als jede Zeile einzeln zu bearbeiten.

ebenfalls könnte der Vorgang dadurch beschleunigt werden, dass du die automatische Neuberechnung ausschaltest:
Application.Calulation = xlCalculationManual (zum Einschalten am Ende dann =.xlCalculationAutomatic)

weil es Funktionen gibt, die den Ausgeblendetzustand berücksichtigen, führt Excel beim Ein- und Ausblenden eine Neuberechnung durch was aber in den meisten Fällen nicht notwendig ist (ausser du verwendest die Funtkionen Teilergebnis oder Aggregat)

Gruß Daniel


  

Betrifft: AW: Makro läuft zu langsam von: Andreas
Geschrieben am: 08.08.2014 10:44:23

Hallo Daniel,

habe versucht deine beiden vorgeschlagenen CodeZeilen in mein Makro mit einzubauen.
Kriege das aber mit meinen bescheidenen VBA Kenntnissen nicht so richtig auf die Reihe.

Kannst Du mir das vielleicht noch in mein bestehendes Makro mit einbauen?
brauche dazu nochmals Hilfe

liebe Grüße Andreas


  

Betrifft: AW: Makro läuft zu langsam von: Daniel
Geschrieben am: 08.08.2014 10:52:03

Hi
an den Anfang ein "Application.Calculation = xlcalulationmanual" zu schreiben und am Ende nochmal ein "Application.Calculation = xlcalculationautomatic" sollte dich nicht überfordern.
aber das bringt nur was, wenn auch Formeln vorhanden sind, die sich auf diesen Bereich beziehen (sonst gibts eh keine neuberechnung)
Gruß Daniel


  

Betrifft: AW: O.T Makro läuft zu langsam von: Andreas
Geschrieben am: 08.08.2014 11:04:19

Hallo Daniel,

OK habs hinbekommen.
Makro läuft jetzt schneller durch.
Danke

liebe Grüße Andreas


 

Beiträge aus den Excel-Beispielen zum Thema "Makro läuft zu langsam"