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

Zeilen automatisch einfügen

Zeilen automatisch einfügen
04.05.2007 22:16:15
rastel
Hallo,
ich habe sehr viele Reihen an Datensätzen in einer Tabelle. In Spalte A stehen sortierte Gruppennamen. Dabei stehen jeweils in mehreren Reihen die gleichen Namen.
Ich möchte nun vor jeder dieser Gruppen eine Zeile einfügen.
Hier im Forum habe ich diesen Beitrag gefunden:
https://www.herber.de/forum/archiv/356to360/t359315.htm
Daraufhin habe ich folgendes Makro geschrieben

Sub Zeilen_einfügen()
Application.ScreenUpdating = False
i = 1
Do Until IsEmpty(Cells(i + 1, 1))
If Cells(i, 1)  Cells(i + 1, 1) Then
Cells(i + 1, 1).EntireRow.Insert
End If
i = i + 1
Loop
Application.ScreenUpdating = True
End Sub


Aber irgendwie funktioniert das nicht richtig, Excel hängt sich immer auf (ich arbeite an einem Mac und verwende die Mac-Version von MS Office => Excel:Mac 2004)
Das oben verlinkte Makro funktioniert hier aber in einer entsprechend umgestalteten Tabelle (Spalte A meiner Daten in Spalte E verschoben).
Was mache ich falsch?
Vielen Dank!
Gruß Ralph

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

Betreff
Datum
Anwender
Anzeige
AW: Zeilen automatisch einfügen
04.05.2007 22:40:02
fcs
Hallo Ralph,
führe den Makro mal schrittweise mit Taste F8 bei verkleinertem VBA-Editorfenster aus, dann siehst du was passiert. Nach der 1. Gruppe werden endlos Leerzeichen eingefügt. Das geht solange, bis die letzte Datenzeile die Zeile 65536 erreicht, dann kommt die Fehlermeldung.
Folgende kleine Anpassung hilft:

Sub Zeilen_einfügen()
Application.ScreenUpdating = False
i = 1
Do Until IsEmpty(Cells(i + 1, 1))
If Cells(i, 1)  Cells(i + 1, 1) Then
Cells(i + 1, 1).EntireRow.Insert
i = i + 1
End If
i = i + 1
Loop
Application.ScreenUpdating = True
End Sub


Gruß
Franz

Anzeige
AW: Zeilen automatisch einfügen
04.05.2007 22:46:00
rastel
Vielen Dank!
Jetzt funktioniert es.
Gruß
Ralph

AW: Zeilen automatisch einfügen
04.05.2007 23:12:00
Kai
Hallo Ralph,
in deiner Tabelle steht irgend etwas in A2. Auf dieses etwas stößt das Makro in Zeile vier mit der Abbruchbedingung für die Do-Loop-Schleife. Dann fügt das Makro eine Leerzeile ein, Zeile 2 ist jetzt Leer und alles andere rutscht eine Zeile nach unten. i wird um eins erhöht, und das ganze wiederholt sich. Und zwar so lang, bis von Zeile 2 bis ans Ende des Tabellenblattes Leerzeilen eingefügt wurden. Und Excel dann abstürzt, weil es einfach zu viele Zeilen sind (bei knapp 64.000).
Versuchs mal hiermit. Was fehlte ist das i=i+1 nach dem einfügen. Die Abbruchbedingung gefällt mir so besser, ist aber egal, mit der anderen sollt's auch gehen. Hier müsstest du Tabelle1 natürlich erst mit deinem Blattnamen ersetzen.

Sub Zeilen_einfügen()
Application.ScreenUpdating = False
i = 1
Do Until i > Sheets("Tabelle1").Range("A65536").End(xlUp).Row
If Cells(i, 1)  Cells(i + 1, 1) Then
Cells(i + 1, 1).EntireRow.Insert
i = i + 1
End If
i = i + 1
Loop
Application.ScreenUpdating = True
End Sub


Gruß,
Kai

Anzeige
AW: Zeilen automatisch einfügen
04.05.2007 23:14:10
Kai
Na, das war ja schon längst beantwortet. Da bin ich wohl etwas spät dran ;)

AW: Zeilen automatisch einfügen
04.05.2007 23:16:10
rastel
Trotzdem auch vielen Dank an dich, Kai ;-)
Dank euch weiß ich jetzt wenigstens auch genau, warum Excel da so am Rödeln war.
Gruß,
Ralph

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige