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

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

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...
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?
Anzeige
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

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige