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

langsame Schleife zur Spaltenausblendung

langsame Schleife zur Spaltenausblendung
01.12.2014 13:35:39
Andi
Hallo zusammen,
habe einen umfangreichen Kalenderbereich, der mittels der nachfolgenden Schleife automatisch angepasst wird. Nach Ermittlung der Min und Max Datumswerte gebe ich jeweils noch ein wenig Zeit drauf und lasse dann die ungenutzten Spalten ausblenden.
Hat jemand einen Tipp, wie das schneller laufen könnte? Die Schleife ist doch sehr langsam.
Danke i.Voraus & Gruß
  • Sub Kalender_unbenutzt_ausblenden()
    Dim rngKal As Range
    Dim Stdat As Date
    Dim Etdat As Date
    Dim Sdat As Date
    Dim Edat As Date
    'Letzte Zeile
    Lastz = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    ' Min aus Soll-Start
    Stdat = WorksheetFunction.Min(Range("JW10:Jw" & Lastz))
    ' minus 2 Monate
    Sdat = DateSerial(Year(Stdat), Month(Stdat) - 2, 1)
    ' Max aus PrognoseEnde
    Etdat = WorksheetFunction.Max(Range("JZ10:JZ" & Lastz))
    ' plus 2 Monate
    Edat = DateSerial(Year(Etdat), Month(Etdat) + 3, 0)
    ' Schleife über Kalender
    Application.ScreenUpdating = False
    For Each rngKal In Range("F8:JE8") 'Bereich der Datumsangaben
    rngKal.EntireColumn.Hidden = rngKal.Value  Edat
    Next rngKal
    Application.ScreenUpdating = True
    End Sub
    


  • 5
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: langsame Schleife zur Spaltenausblendung
    01.12.2014 13:50:53
    Rudi
    Hallo,
    Sub Kalender_unbenutzt_ausblenden()
    Dim rngKal As Range, rngHide As Range
    Dim Stdat As Date
    Dim Etdat As Date
    Dim Sdat As Date
    Dim Edat As Date
    'Letzte Zeile
    Lastz = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    ' Min aus Soll-Start
    Stdat = WorksheetFunction.Min(Range("JW10:Jw" & Lastz))
    ' minus 2 Monate
    Sdat = DateSerial(Year(Stdat), Month(Stdat) - 2, 1)
    ' Max aus PrognoseEnde
    Etdat = WorksheetFunction.Max(Range("JZ10:JZ" & Lastz))
    ' plus 2 Monate
    Edat = DateSerial(Year(Etdat), Month(Etdat) + 3, 0)
    ' Schleife über Kalender
    Application.ScreenUpdating = False
    Columns.Hidden = False
    For Each rngKal In Range("F8:JE8") 'Bereich der Datumsangaben
    If rngKal.Value  Edat Then
    If rngHide Is Nothing Then
    Set rngHide = rngKal.EntireColumn
    Else
    Set rngHide = Union(rngHide, rngKal.EntireColumn)
    End If
    End If
    Next rngKal
    If Not rngHide Is Nothing Then rngHide.Hidden = True
    Application.ScreenUpdating = True
    End Sub
    

    Gruß
    Rudi

    Anzeige
    AW: langsame Schleife zur Spaltenausblendung
    01.12.2014 14:20:36
    Andi
    Hallo Rudi,
    danke für die prompte Lösung. Leider erhalte ich folgende Fehlermeldung:
    "Die Hidden-Eigenschaft des Range-Objektes ist nicht ....."
    Vorletzte Zeile: If Not rngHide Is Nothing Then rngHide.Hidden = True
    Selbstständige Fehlersuche scheitert leider an meinen Kenntnissen :(

    AW: langsame Schleife zur Spaltenausblendung
    01.12.2014 14:34:19
    Rudi
    Hallo,
    dann mit
    If Not rngHide Is Nothing Then rngHide.EntireColumn.Hidden = True
    Gruß
    Rudi

    Ist jetzt schnelle Schleife; Danke.
    01.12.2014 14:41:34
    Andi
    Wow! Klick und fertig = sehr schnell.
    Nun muss ich es nur noch verstehen.
    Besten Dank dafür.
    Gruß Andi

    AW: Ist jetzt schnelle Schleife; Danke.
    01.12.2014 15:35:20
    Klaus
    Hi Andi,
    Nun muss ich es nur noch verstehen.
    ich springe mal für Rudi ein:
    Dein Code hat x Kommandos für "Spalte ausblenden" fabriziert. Jedes Kommando braucht natürlich Zeit, auch ohne screenupdating.
    Rudi's Variante sammelt erst alle Spalten im Union, und blendet das Union dann mit einem einzelnen Befehl komplett aus. Das geht natürlich viel schneller, da es nur ein Ausblenden-Kommando gibt statt x.
    Das "if not is nothing" ist ein Sicherheitsanker, falls keine Spalten ausgeblendet werden sollen. Denn "Blende alle von keinen Spalten aus" gäbe eine Fehlermeldung.
    Grüße,
    Klaus M.vdT.
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige