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

Leerzeile einfügen

Leerzeile einfügen
14.09.2023 01:21:34
EL-TI
Liebes Forum,

habe eine größere Tabelle mit unterschiedlichen Datumseinträgen. Sobald sich in der Tabelle das "JahresDatum" ändert, sollten dann drei neue Zeilen eingefügt werden. (Wenn machbar, die Anzahl der Zeilen wählbar). Anfang der Tabelle ist in Zeile 12, Ende ist unterschiedlich und das Datum steht in Spalte "D".
Vielen Dank im voraus

Viele Grüße
Elfriede

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Leerzeile einfügen
14.09.2023 07:16:05
Oberschlumpf
Hallo Elfriede,

- arbeite erst mal mit einer Kopie deiner Original-Datei
- aktiviere in deiner Datei DAS Blatt, welches die vielen Zeilen mit Datumseinträgen enthält - das Blatt muss also ausgewählt/sichtbar sein
- füg in der Kopie im Visual Basic Editor ein allgemeines Modul hinzu
- kopier den folgenden Code und füg diesen in das allgemeine Modul ein



Sub sbAddRows()

Dim lloRow As Long

For lloRow = Cells(Rows.Count, 4).End(xlUp).Row To 1 Step -1
If lloRow - 1 > 0 Then
If Year(Range("D" & lloRow).Value) > Year(Range("D" & lloRow - 1).Value) Then
Rows(lloRow & ":" & lloRow + 2).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End If
End If
Next

End Sub


- starte das Makro

Hilfts?
Nein? Dann zeig bitte per Upload eine Bsp-Datei mit ausreichend vielen Bsp-Datenzeilen.

Ciao
Thorsten
Anzeige
Leerzeile einfügen
14.09.2023 08:07:07
UweD
Hallo

hier eine Lösung von mir:

Sub Leerzeilen()

Dim TB As Worksheet, LR As Long, Z1 As Integer, i As Long, Sp As Integer, Anz As Integer

Set TB = Sheets("Tabelle1")
Z1 = 12 'Erste Zeile
Sp = 2 'Spalte mit dem Datum

Anz = InputBox("Anzahl der einzufügenden Leerzeilen?", , 3)
If Anz = 0 Then Exit Sub

With TB
LR = .Cells(.Rows.Count, Sp).End(xlUp).Row 'letzte Zeile der Spalte

For i = LR To Z1 + 1 Step -1
If .Cells(i - 1, Sp) > "" And .Cells(i, Sp) > "" And .Cells(i - 1, Sp) > .Cells(i, Sp) Then
.Rows(i).Resize(Anz).Insert
End If

Next

End With
End Sub



LG UweD
Anzeige
ups!
14.09.2023 08:17:40
Oberschlumpf
Hi alle,

ich war wohl wirklich noch nich wach!^^ :-)

Mein neuer Code funktioniert zwar nun auch, aber ich hab total den "Wunsch" überlesen, dass die Anzahl an einzufügenden Leerzeilen gern steuerbar wäre.

Ciao
Thorsten
Leerzeile einfügen
14.09.2023 08:49:39
UweD
Hallo

die ursprüngliche Lösung ist davon ausgegangen, dass nur eine "Jahreszahl" in der Zelle stand.

Falls es wirklich ein Datum ist, und nur die Jahreszahl daraus betrachtet werden soll, dann so...

Sub Leerzeilen()

Dim TB As Worksheet, LR As Long, Z1 As Integer, i As Long, Sp As Integer, Anz As Integer

Set TB = Sheets("Tabelle1")
Z1 = 12 'Erste Zeile
Sp = 2 'Spalte mit dem Datum

Anz = InputBox("Anzahl der einzufügenden Leerzeilen?", , 3)
If Anz = 0 Then Exit Sub

With TB
LR = .Cells(.Rows.Count, Sp).End(xlUp).Row 'letzte Zeile der Spalte

For i = LR To Z1 + 1 Step -1
If IsDate(.Cells(i - 1, Sp)) And IsDate(.Cells(i, Sp)) Then
If Year(.Cells(i - 1, Sp)) > Year(.Cells(i, Sp)) Then
.Rows(i).Resize(Anz).Insert
End If
End If

Next

End With
End Sub


LG UweD
Anzeige
Leerzeile einfügen
14.09.2023 11:16:52
EL-TI
Hallo UweD,

zuerst Danke für Dein Makro. Das ist genau das, so wie es sein soll (die 2.te Vers. aber).

Somit alles O, K.

Viele Grüße
Elfriede
das hier is besser! :-)
14.09.2023 07:33:47
Oberschlumpf
Moin Elfriede,

mein 1. Versuch war ein "Schnellschuss" und funktioniert leider genau nur 1x.
Weitere Starts des alten Makros haben zur Folge, dass immer + immer wieder weitere Leerzeilen hinzugefügt werden, obwohl du doch nur 3 Leerzeilen haben möchtest.

Verwende bitte diesen Code:


Sub sbAddRows()

Dim lloRow As Long

For lloRow = Cells(Rows.Count, 4).End(xlUp).Row To 1 Step -1
If lloRow - 1 > 0 Then
If Range("D" & lloRow).Value > "" And _
Range("D" & lloRow - 1).Value > "" Then
If Year(Range("D" & lloRow).Value) > Year(Range("D" & lloRow - 1).Value) Then
Rows(lloRow & ":" & lloRow + 2).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End If
End If
End If
Next

End Sub


Zumindest in meinen Tests funktionierts jetzt fehlerfrei - bei dir auch?

Ciao
Thorsten
Anzeige
das hier is besser! :-)
14.09.2023 11:22:32
EL-TI
Hallo Thorsten,

zuerst Danke für Dein Makro. Habe mich aber für das Makro von UweD entschieden, weil es doch anpassungsfähiger ist.
Somit alles O, K.

Viele Grüße
Elfriede

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige