Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
916to920
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
916to920
916to920
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makroausführung dauert sehr lange

Makroausführung dauert sehr lange
21.10.2007 10:29:43
KiaOra
Hi Ihr, ;-)
möchte gerne beim Anklicken eines Blattes folgendes Makro laufen lassen.
Ziel: Optimale Zeilenhöhe bei Zeilenumbruch mit einer Mindeshöhe von 18.75.
Problem dabei: Obwohl immer nur ein Bruchteil der Zellen befüllt ist und im Filter angezeigt wird, läuft das Makro scheinbar immer über alle Zeilen (bis 1998) u. braucht entsprechend lange (bei mir ca. 3 - 5 Sek.).
Habt Ihr ne Idee, wie ich das noch etwas schneller bekommen kann bzw. nur auf das Filterergebnis einschränken kann ? :-)

Private Sub Worksheet_Activate()
Range("A2:L1998").Select
Selection.AutoFilter Field:=1
Selection.AutoFilter Field:=1, Criteria1:=""
Dim rng As Range
Application.ScreenUpdating = False
For Each rng In Selection.Rows
rng.AutoFit
If rng.RowHeight 


Vielen Dank für jede Hilfe !
VG u. machts gut,
Micha

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makroausführung dauert sehr lange
21.10.2007 10:34:00
Josef
Hallo Micha,
warum wolltest du dann gestern immer den Bereich 2:1998 ?
Private Sub Worksheet_Activate()
Dim rng As Range

On Error GoTo Ende
Application.ScreenUpdating = False

With Range("A2").CurrentRegion
    .AutoFilter Field:=1
    .AutoFilter Field:=1, Criteria1:="<>"
    For Each rng In .Rows
        rng.AutoFit
        If rng.RowHeight < 18.75 Then rng.RowHeight = 18.75
    Next
End With

Ende:
Application.ScreenUpdating = True
End Sub

Gruß Sepp

Anzeige
AW: Makroausführung dauert sehr lange
21.10.2007 11:08:49
KiaOra
Hallo Sepp,
das ist ja klasse, dass Du schon wieder aushilfst - danke !
Mein Problem ist nach wie vor die Zeit, die das Makro braucht (auch jetzt noch mehrere Sek.).
Könnte ich vielleicht noch einfügen, dass nur Zeilen mit Inhalt geprüft werden oder so ?
Tut mir leid, wenn ich Dich hier so in Anspruch nehme, aber die Ladezeit ist echt lange (und komischerweise nur bei diesem Makro...).
VG,
Micha

AW: Makroausführung dauert sehr lange
21.10.2007 11:12:00
Josef
Hallo Micha,
ich glaube zwar nicht das es etwas bringt, aber jetzt werdeb nur Zeilen mit Inhalt in Spalte "C" geprüft.
Private Sub Worksheet_Activate()
Dim rng As Range

On Error GoTo Ende
Application.ScreenUpdating = False

With Range("A2").CurrentRegion
    .AutoFilter Field:=1
    .AutoFilter Field:=1, Criteria1:="<>"
    For Each rng In .Columns(3).SpecialCells(xlCellTypeConstants).Rows
        rng.AutoFit
        If rng.RowHeight < 18.75 Then rng.RowHeight = 18.75
    Next
End With

Ende:
Application.ScreenUpdating = True
End Sub


Gruß Sepp

Anzeige
AW: Makroausführung dauert sehr lange
21.10.2007 11:18:00
KiaOra
Hallo Sepp,
ist ein Unterschied wie Tag und Nacht - jetzt läufts ultra-schnell, keine Ahnung warum ! :-)
Die (hoffentlich) letzte Frage dazu: Wie könnte ich hier mehrere Spalten angeben (z.B. A:C) ? ;-)
VG,
Micha

AW: Makroausführung dauert sehr lange
21.10.2007 11:20:50
Josef
Hallo Micha,
das freud mich.
Mehrere Spalten so.
Private Sub Worksheet_Activate()
Dim rng As Range

On Error GoTo Ende
Application.ScreenUpdating = False

With Range("A2").CurrentRegion
    .AutoFilter Field:=1
    .AutoFilter Field:=1, Criteria1:="<>"
    For Each rng In .Columns("A:C").SpecialCells(xlCellTypeConstants).Rows
        rng.AutoFit
        If rng.RowHeight < 18.75 Then rng.RowHeight = 18.75
    Next
End With

Ende:
Application.ScreenUpdating = True
End Sub

Gruß Sepp

Anzeige
AW: Makroausführung dauert sehr lange
21.10.2007 11:39:00
KiaOra
...oh mann - ich trau mich ja fast nicht mehr... ;-)
läuft perfekt - sofern die Daten direkt in diesem Blatt eingegeben werden...
...kommen die Daten per wenn-dann-Formel von einem anderen Blatt, erkennt es das Makro offenbar nicht...
...weisst Du auch dafür noch was...? :-(
Vielen Dank für alles !
Micha

AW: Makroausführung dauert sehr lange
21.10.2007 11:46:12
Josef
Hallo Micha,
ungetestet.
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_Activate()
Dim rng As Range, rngU As Range

On Error GoTo Ende
Application.ScreenUpdating = False

With Range("A2").CurrentRegion
    .AutoFilter Field:=1
    .AutoFilter Field:=1, Criteria1:="<>"
    
    On Error Resume Next
    Set rngU = Union(.Columns("A:C").SpecialCells(xlCellTypeConstants), _
        .Columns("A:C").SpecialCells(xlCellTypeFormulas))
    Err.Clear
    On Error GoTo Ende
    
    For Each rng In rngU.Rows
        rng.AutoFit
        If rng.RowHeight < 18.75 Then rng.RowHeight = 18.75
    Next
    
End With

Ende:
Application.ScreenUpdating = True
End Sub

Gruß Sepp

Anzeige
AW: Makroausführung dauert sehr lange
21.10.2007 20:18:36
KiaOra
Hallo Sepp,
nochmals vielen vielen Dank für alle Hilfe !
Ist echt klasse, wenn sich jemand so viele Zeit für Fragen und Probleme nimmt !
Habe Dein Makro in Verwendung u. bin nun echt zufrieden mit den Rechenzeiten. ;-)
VG u. einen schönen Abend,
Micha

AW: die Erklärung
21.10.2007 11:46:25
Daniel
Hi Micha
damit du es auch verstehts, warum es schneller ist:
der Zusatz .SpecialCells(xlCellTypeConstants) schränkt den Zellbereich auf die Zellen eine, die auch tatsächlich einen FixWert enthalten, dh. Leerzellen und Zellen mit einer Formel gehören nicht mehr zur Auswahl.
Damit ist die Anzahl der Zellen, die bearbeitet werden muss, natürlich geringer und das Makro schneller.
Der Befehl entspricht der Excel-Funktion Bearbeiten - Gehe Zu - Inhalte.
Hier siehst du auch, welche Möglichkeiten dieser Funktion bietet und kannst über den Recorder relativ schnell den richtigen Parameter rausfinden.
Im Zusammenhang mit dem Autofilter scheint mir aber .SpecialCells(xlCellTypeVisible) sinnvoller, da hier die Auswahl auf die gefilterten Zellen eingeschränkt wird.
Gruß, Daniel
PS über diese Funkion kann man mit ein Paar kreativen Ideen und geschickten Formeln oft sehr schnelle weil schleifenfreie Markros schreiben

Anzeige
AW: die Erklärung
21.10.2007 20:16:47
KiaOra
Hi Daniel,
vielen vielen Dank für die ausführliche Erklärung und den Tipp mit CellTypeVisible !
Ist echt klasse, wenn man neben den Codes auch noch so eine Hilfe bekomme !
VG u. einen schönen Abend,
Micha

53 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige