Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Geschwindigkeit

Forumthread: Geschwindigkeit

Geschwindigkeit
26.02.2007 13:34:00
Walburga
Ein frohes Hallo an alle
sieht jemand eine Möglichkeit, folgendes Makro schneller zu machen (muss ca. 5.000 Zeilen durchlaufen)

Sub Gliederung_ein()
Dim a As Long, i As Long
With Sheets("Plan")
Selection.ClearOutline
a = .UsedRange.Rows.Count
For i = 2 To a
If IsNumeric(.Cells(i, 2)) And .Cells(i, 2) = "" Then .Rows(i).Group
If IsNumeric(.Cells(i, 4)) And .Cells(i, 4) <> "" Then .Rows(i).Group
If IsNumeric(.Cells(i, 5)) And .Cells(i, 5) <> "" Then .Rows(i).Group
If IsNumeric(.Cells(i, 6)) And .Cells(i, 6) <> "" Then .Rows(i).Group
If IsNumeric(.Cells(i, 1)) And .Cells(i, 1) = "" Then .Rows(i).Group
Next
.Outline.ShowLevels RowLevels:=3
.Outline.ShowLevels RowLevels:=2
.Outline.ShowLevels RowLevels:=1
.CommandButton1.Caption = "Gliederung aus!"
.CommandButton1.BackColor = &HFF&  'rot
End With
End Sub

Vielen Dank für's Überlegen
Gruss Walburga
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Geschwindigkeit
26.02.2007 14:06:00
ingoG
Hallo Walburga,
mE sollte folgender Code etwas schneller sein:
For i = 2 To a
If (.Cells(i, 2) = "" ) Or
(IsNumeric(.Cells(i, 4)) And .Cells(i, 4) "") Or
(IsNumeric(.Cells(i, 4)) And .Cells(i, 5) "") Or
(IsNumeric(.Cells(i, 4)) And .Cells(i, 6) "") Or
(.Cells(i, 1) = "") Then .Rows(i).Group
Next
im Zweifelsfall werden hier nur halb soviele Abfragen berechnet und uU auch nur bis zu 1/5 der Group-Befehle ausgeführt...
Du kannst es ja mal testen
Gruß Ingo
PS eine Rückmeldung wäre nett...
Anzeige
AW: Geschwindigkeit
26.02.2007 14:20:41
Walburga
Hi Ingo
danke für Dein "Gehirnschmalz". Leider wars zu "mager". Dein Vorschlag ermittelt nur 2 Gliederungsebenen, gebraucht werden aber mind. 4.
Wer weiss noch etwas?
AW: Geschwindigkeit
26.02.2007 16:13:00
mpb
Hallo Walburga,
wenn ich die Bedingungen richtig verstehe, werden in den Spalten D:F nur Zellen mit Zahlen als Inhalte "gesucht". Die kannst Du auch mit
Columns("D").SpecialCells(xlCellTypeConstants, 1).Select
ansprechen und in einer For-Each-Schleife durchlaufen (Hier vorausgesetzt: Die Zahlen sind Konstanten, keine Formelergebnisse. Ansonsten xlCellTypeFormulas statt xlCellTypeConstants verwenden.)
Die Bedingung für die Spalten A und B verstehe ich nicht so richtig.
IsNumeric(.Cells(i, 2)) And .Cells(i, 2) = ""
kann nur dann WAHR sein, wenn beide Teilbedingungen WAHR sind. Das wiederum ist nur dann der Fall, wenn die Zelle LEER ist, also ist die erste Teilbedingung überflüssig. Die leeren Zellen einer Spalte kannst Du wiederum mit
Columns("A").SpecialCells(xlCellTypeBlanks).Select
und For-Each-Schleife bearbeiten.
Vielleicht benötigst Du die Schleifen aber auch gar nicht und kannst die ausgewählten Zellen "als Ganzes" mit group bearbeiten, ich kann das jetzt leider nicht ausprobieren.
Gruß
Martin
Anzeige
AW: Geschwindigkeit
26.02.2007 16:43:00
Walburga
Grüss Dich Martin
danke ür die Antwort, kanns heute jedoch nicht mehr testen.
Bis morgen
Gruss Walburga
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige