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

Leerzeilen einfügen innerhalb einer Schleife

Leerzeilen einfügen innerhalb einer Schleife
30.12.2016 11:50:24
Marc

Hi,
ich versuche mich gerade an meinen ersten VBA-Schritten und möchte einen Banken-CSV-Export ein wenig "aufhübschen".
Vor diesem Hintergrund habe ich eine Range definiert - beginnenend mit der ersten Konto-Bewegung bis zum Zeilenende.
Nun will ich die Monatsscheiben gruppieren, bzw. eine paar Summen einfügen. Zur Vorbereitung ermitteln ich daher für jede Kontobewegung/Zeile das Datum (steht in Spalte A) und vergleiche das mit dem aktuellen Monat. Ist der Wert in der Zelle ungleich dem aktuellen Monat möchte ich gern eine Leerzeile einfügen.
Mein bis dato kläglicher Versuch sieht so aus:

Sub Makro1()
Dim LastRow As Long
Set sht = Sheets("Tabelle1")
LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row
Dim rng As Range, cell As Range
Set rng = Range("A8", Cells(LastRow, 1))
Dim CurrentMonth As Integer
CurrentMonth = Month(Date)
'MsgBox ("aktueller Monat: " & CurrentMonth)
For Each cell In rng
If Month(cell) < CurrentMonth And Not IsEmpty(cell.Value) Then
Rows(cell.Row).Insert shift:=xlShiftDown
End If
Next cell
End Sub

Mein Problem: Obwohl ich schon versucht habe zu prüfen, dass der Inhalt nicht leer sein darf lande ich bei Ausführung immer in einer Dauerschleife und das Makro fügt nur noch Leerzeilen ein. Kann mir jemand einen Hinweis geben was ich vergessen habe?
Außerdem habe ich noch eine zweite Frage zum Zeilenende:
In meinem Makro ermittel ich die Anzahl der Zeilen ja bereits zu Beginn. Wenn ich jetzt aber anfange Zeilen einzufügen passt das ja nicht mehr. Wie kann ich also eine Schleife so bauen, dass das Zeilenende sich der veränderten Liste anpasst?
Danke im Voraus für alle Tipps/Hinweise!

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

Betreff
Datum
Anwender
Anzeige
AW: Leerzeilen einfügen innerhalb einer Schleife
30.12.2016 12:52:16
MCO
Hallo!
Du willst doch die Monate unterteilen, wieso vergleichst du dann mit aktuellem Datum?
Ich hab es mal so umgesetzt, wie ich denke, dass es richtig ist.
Viel Erfolg
Gruß, MCO
Sub Makro1()
Dim LastRow As Long
Set sht = Sheets("Tabelle1")
LastRow = sht.Cells(Rows.Count, "A").End(xlUp).Row 'letzte Zeile
Dim rng As Range, cell As Range
Set rng = Range("A8:A" & LastRow).SpecialCells(xlCellTypeConstants) ' nur konstanten(keine  _
leeren)
For Each cell In rng
If Month(cell) <> Month(cell.Offset(-1, 0)) And _
Not cell.Offset(-1, 0) = "" Then 'Monat ungleich und vorhergehende Zelle nicht leer
Rows(cell.Row).Insert shift:=xlShiftDown
End If
Next cell
End Sub

Anzeige
AW: Leerzeilen einfügen innerhalb einer Schleife
30.12.2016 13:07:51
Marc
Danke für den Hinweis...ist tatsächlich wesentlich einfacher die Datumswerte miteinander zu vergleichen als jeden Datumswert mit dem aktuellen Monat. Zumal ich in einem zweiten Schritt ja diesen Monat noch hätte manipulieren müssen wenn ich nicht mehr im Dezember bin, sondern den ersten Monatswechsel hinter mir habe...
Durch das Offset muss ich jetzt aber im ersten Durchlauf mit dem Umstand umgehen, dass ich hier einen Datumswert mit einem nicht Datumswert vergleiche und es bei der Ausführung zu einem Laufzeitfehler kommt:
Month(cell) <> Month(cell.Offset(-1, 0))
Wie kann ich diesen Ausdruck denn härten, dass der Fehler nicht auftritt?
Anzeige
AW: Leerzeilen einfügen innerhalb einer Schleife
30.12.2016 13:15:27
Marc
Hat sich geklärt. Problem wurde bereits beantwortet.
AW: Leerzeilen einfügen innerhalb einer Schleife
30.12.2016 13:06:25
Daniel
HI
wenn du per Schleife Zeilen einfügen oder löschen willst, sollte die Schleife immer rückwärts laufen, dh von der letzten bis zur ersten Zeile.
das hat den Vorteil, dass das Einfügen oder Löschen sich nur auf den Zellbereich auswirkt der schon bearbeitet wurde und daher nicht mehr berücksichtigt werden muss:
der folgende Code fügt zwischen den Monaten eine Zeile ein:
Sub Makro1()
Dim sht As Worksheet
Dim LastRow As Long, Zeile As Long
Set sht = Sheets("Tabelle1")
LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row
For Zeile = LastRow To 8 Step -1
If IsDate(sht.Cells(Zeile, 1)) And IsDate(sht.Cells(Zeile + 1, 1)) Then
If Month(sht.Cells(Zeile, 1)) <> Month(sht.Cells(Zeile + 1, 1)) Then
sht.Rows(Zeile + 1).Insert
End If
End If
Next Zeile
End Sub
gruß Daniel
Anzeige
AW: Leerzeilen einfügen innerhalb einer Schleife
30.12.2016 13:14:41
Marc
Danke...Treffer und versenkt!

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige