Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Makro sehr langsam
zurück: Filterung beim Schließen der Tabelle rausnehmen weiter: Spalten in denen Das Datum in der Vergangenheit Liegt ausble Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Andi_1982
Gast


Verfasst am:
25. Apr 2014, 08:18
Rufname:

Makro sehr langsam - Makro sehr langsam

Nach oben
       Version: Office 2007

Guten Morgen!

ich habe ein Makro erstellt, das beim Öffnen der Excel-Datei ausgeführt wird. Durch dieses Makro werden nicht benötigte Zeilen ausgeblendet.

Das ist der Code dafür:

With ThisWorkbook.Worksheets("REPORT").Application.ScreenUpdating = False
Set CellRange = Range("B91:B115,B121:B145,B151:B175,B181:B205")
For Each Cell In CellRange
Cell.EntireRow.Hidden = (Cell.Value = 0)
Next
End With



Das ganze funktioniert auch, ist aber leider sehr langsam. Das Öffnen der Datei dauert bei mir nun ca. 45 bis 50 Sekunden.

Hat jemand von euch eine Idee, wie ich dieses Makro beschleunigen kann! Question

Danke für jede Hilfe!

Lg Andi
Phelan XLPH
Fortgeschritten


Verfasst am:
25. Apr 2014, 09:01
Rufname: Phelan

AW: Makro sehr langsam - AW: Makro sehr langsam

Nach oben
       Version: Office 2007

Hallo Andi,

verwende den Autofilter.

_________________
Was vorstellbar ist, ist auch machbar. - Albert Einstein
Der Steuerfuzzi
Experimentierfreudiger Excelfreund


Verfasst am:
25. Apr 2014, 09:01
Rufname:

AW: Makro sehr langsam - AW: Makro sehr langsam

Nach oben
       Version: Office 2007

Hallo,

der With-Teil stimmt irgendwie nicht. Außerdem wird er nicht verwendet.
Du solltest am Ende Scrennuptating wieder auf true setzen.
Du hast als "cell" als Variable verwendet. Ich vermeide soetwas, da hier eine Verwechslung mit cells nicht ausgeschlossen ist.

Ich gehe mal davon aus, dass bei Beginn des Makros ausgeblendete Zeilen durch das Makro wieder eingeblendet werden sollen, wenn in der Spalte B ein Wert steht, oder?

Hier mal ein Versuch zur Beschleunigung:

Code:
Sub Ausblenden()

Dim Ausblenden As Range
Dim Einblenden As Range
Dim cellrange As Range
Dim Zelle As Range

Application.ScreenUpdating = False
Application.Calculation = xlManual

With ThisWorkbook.Worksheets("REPORT")

Set cellrange = .Range("B91:B115,B121:B145,B151:B175,B181:B205")

For Each Zelle In cellrange
   If Zelle.Value = 0 Then
      If Ausblenden Is Nothing Then
         Set Ausblenden = Zelle
      Else
         Set Ausblenden = Union(Ausblenden, Zelle)
         Debug.Print Ausblenden.Address
   End If
   Else
      If Einblenden Is Nothing Then
         Set Einblenden = Zelle
      Else
         Set Einblenden = Union(Einblenden, Zelle)
      End If
     
   End If
 
If Not Ausblenden Is Nothing Then Ausblenden.EntireRow.Hidden = True
If Not Einblenden Is Nothing Then Einblenden.EntireRow.Hidden = False

Next

End With

Application.Calculation = xlAutomatic
Application.ScreenUpdating = True


End Sub

_________________
Gruß
Steuerfuzzi
Der Steuerfuzzi
Experimentierfreudiger Excelfreund


Verfasst am:
25. Apr 2014, 09:04
Rufname:

Re: AW: Makro sehr langsam - Re: AW: Makro sehr langsam

Nach oben
       Version: Office 2007

Hallo Phelan,

Phelan XLPH - 25. Apr 2014, 09:01 hat folgendes geschrieben:

verwende den Autofilter.


Ich vermute mal, dass die Auswertung mehrere Blöcke mit ggf. eigenen Überschriften sowie Zwischenergebnisse enthält. Auch danach folgenden Leerzeilen, z. B. vor Überschriftszeilen bzw. nach Zwischenergebnissen werden vermutlich erhalten bleiben müssen. Damit wird der Autofiolter nicht das gewünschte Ergebnis liefern können.

_________________
Gruß
Steuerfuzzi
Thomas Ramel
Microsoft Excel-MVP


Verfasst am:
25. Apr 2014, 09:09
Rufname: Thom
Wohnort: Glashütten - CH

AW: Makro sehr langsam - AW: Makro sehr langsam

Nach oben
       Version: Office 2007

Grüezi Andi

Bei mir läuft der Code in weniger als 1 Sekunde auch so durch, hast Du vielleicht noch einiges an Berechnungen in der Mappe oder Bedingte Formatierungen?

Etwas schneller könnte es gehen, wenn Du die Zellen im Code zu einem gemeinsamen Bereich zusammenfasst und diesen dann erst am Ende gemeinsam ausblendest.


Code:
Sub tr()
Dim CellRange As Range
Dim Hiderange As Range
Dim Zelle As Range

    Application.ScreenUpdating = False
    With ThisWorkbook.Worksheets("REPORT")
        Set CellRange = Range("B91:B115,B121:B145,B151:B175,B181:B205")
        For Each Zelle In CellRange

            If Zelle.Value = 0 Then
                If Hiderange Is Nothing Then
                    Set Hiderange = Zelle
                Else
                    Set Hiderange = Union(Hiderange, Zelle)
                End If
            End If
        Next
        Hiderange.EntireRow.Hidden = True
    End With
    Application.ScreenUpdating = True
End Sub



PS:
Verwende keine reservierten Begriffe wie Cell als Variablen-Namen, das könnte mal zu Problemen führen.

_________________
Mit freundlichen Grüssen

Thomas Ramel
[Vista Ultimate SP-1 / xl2007 SP-2]
Phelan XLPH
Fortgeschritten


Verfasst am:
25. Apr 2014, 09:30
Rufname: Phelan

AW: Makro sehr langsam - AW: Makro sehr langsam

Nach oben
       Version: Office 2007

Hallo,

eine weitere Möglichkeit mit einem etwas anderen Ansatz:


Code:
Sub HideRows_xlph()
    Dim rngHidden As Range
    Dim varSearchValue As Variant
   
    varSearchValue = 0
   
    Application.ScreenUpdating = False
   
    With ThisWorkbook.Worksheets("REPORT")
        With .Range("B91:B115,B121:B145,B151:B175,B181:B205")
            If Not .Find(varSearchValue, , , xlWhole) Is Nothing Then
                .EntireRow.Hidden = True
                Set rngHidden = ColumnDifferences_Func(.Cells, .Find(varSearchValue, , , xlWhole))
                If Not rngHidden Is Nothing Then
                    rngHidden.EntireRow.Hidden = False
                End If
            End If
        End With
    End With
   
    Set rngHidden = Nothing
End Sub

Public Function ColumnDifferences_Func(rngCellRange As Range, rngValue As Range) As Range
    On Error Resume Next
    Set ColumnDifferences_Func = rngCellRange.ColumnDifferences(rngValue)
    On Error GoTo 0
End Function

_________________
Was vorstellbar ist, ist auch machbar. - Albert Einstein
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Excel Formeln: 2 Texte in eine Zelle per Makro ?! 4 ANNAN 683 26. Okt 2007, 23:47
ANNAN 2 Texte in eine Zelle per Makro ?!
Keine neuen Beiträge Excel Formeln: Excel Makro - Summe bilden bei gleichen Suchkriterien 1 Peter1983 3827 26. Sep 2007, 09:39
Alto Excel Makro - Summe bilden bei gleichen Suchkriterien
Keine neuen Beiträge Excel Formeln: automatisches makro 5 sisku46 1297 08. Aug 2007, 09:12
sisku46 automatisches makro
Keine neuen Beiträge Excel Formeln: Brauche Hilfe! Formel und/oder VBA (Makro) 2 ::Patrick:: 2927 01. Aug 2007, 10:42
Gast Brauche Hilfe! Formel und/oder VBA (Makro)
Keine neuen Beiträge Excel Formeln: MsgBox if then programmieren das start Makro bei Yes 0 Klaususv 2591 18. Jul 2007, 12:21
Klaususv MsgBox if then programmieren das start Makro bei Yes
Keine neuen Beiträge Excel Formeln: Namenfeld der Zelle mittels Formel oder Makro benennen 2 cehrat 1181 24. Mai 2007, 16:55
fridgenep Namenfeld der Zelle mittels Formel oder Makro benennen
Keine neuen Beiträge Excel Formeln: Excel: Verketten Wenn (Makro?) 11 Sarah1981 4108 08. Feb 2007, 10:59
Gast Excel: Verketten Wenn (Makro?)
Keine neuen Beiträge Excel Formeln: Blattschutz und Makro 5 Nicole-Fun 6668 10. Jan 2007, 13:06
muenzc Blattschutz und Makro
Keine neuen Beiträge Excel Formeln: Lese- und Schreibschutz über Makro 0 steven143 876 18. Dez 2006, 13:52
steven143 Lese- und Schreibschutz über Makro
Keine neuen Beiträge Excel Formeln: End up, Markieren, Löschen mit Makro 10 detlef42 1290 21. Nov 2006, 16:13
Detlef 42 End up, Markieren, Löschen mit Makro
Keine neuen Beiträge Excel Formeln: Makro mit Selection.AutoFill 2 GastAlex 3911 18. Okt 2006, 15:25
GastAlex Makro mit Selection.AutoFill
Keine neuen Beiträge Excel Formeln: SAP EXCEL Makro WDPDDMAC.XLS 2 tschuett 4313 15. Sep 2006, 08:42
tschuett SAP EXCEL Makro WDPDDMAC.XLS
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Excel Tipps