HERBERS Excel-Forum - das Archiv
Zeile einfügen nach jeder Hauptposition
Jürgen

Hallo Leute
Wieder mal ein kleines Problem wo ich nicht hinbekomme.
Hab einige Codes gefunden und probiert, aber keinen hinbekommen der mir die abfrage macht und dann noch die zellen einfärbt
Ich habe eine Tabelle da muss ich immer von Hand nach jeder Hauptposition eine Zeile einfügen und Grau füllen.
Allerdings nervt das langsam da es meistens an die 30 zeilen sind.
Gibt es eine Möglichkeit dies mittel Commandbutton auszulösen?
In Spalte B stehen alle Positionsnummern,die erste Nummer ist die Hauptposition
01/001
01/002
02/001
02/002
02/003
.
.
.
Spalte A-AC müsste das ganze grau eingefärbt werden
Hat da jemand eine Idee?
Danke für eure Hilfe
mfg
Jürgen

AW: Zeile einfügen nach jeder Hauptposition
Michael

Hallo Jürgen!
Geht bspw. so:
Sub Trennzeile()
Dim i As Long
Dim zEnde As Long
zEnde = Worksheets("Tabelle1").Range("B1").End(xlDown).Row
For i = zEnde To 2 Step -1
If Left(Worksheets("Tabelle1").Cells(i, 2).Value, 2) <> _
Left(Worksheets("Tabelle1").Cells(i - 1, 2).Value, 2) Then
Worksheets("Tabelle1").Rows(i).EntireRow.Insert
Worksheets("Tabelle1").Range(Cells(i, 1), Cells(i, 29)).Interior.Color = _
RGB(190, 190, 190)
End If
Next i
End Sub
Nachdem Du keine weiteren Angaben geliefert hast, musst Du den Code für Deine Tabelle vermutlich noch etwas anpassen --> "Tabelle1" musst Du mit Deinem Tabellenblatt-Namen ersetzen; außerdem gehe ich davon aus, dass Du ab B1 gleich die Daten stehen hast, ohne Überschrift. Hast Du in Zeile 1 noch eine Überschrift, müsstest Du [For i = zEnde To 2 Step -1] auf [For i = zEnde To 3 Step -1] tauschen.
Das kannst Du natürlich auch mit einer Schaltfläche auslösen lassen. Passt?
LG
Michael

AW: Zeile einfügen nach jeder Hauptposition
Jürgen

Hallo Michael
Vielen Dank
Klappt wunderbar echt geil, hast mir den Tag gerettet.
mfg
Jürgen

Gerne, Danke für die Rückmeldung! LG Michael owT
Michael

.

AW: Zeile einfügen nach jeder Hauptposition
Jürgen

Hallo Leute
Michael hat mir ja ein geilen Code gebastelt der super funktioniert.
Jetzt ist nur ein Problem aufgetaucht, wenn man das makro ausgeführt hat und dann noch was ergänzt wird funktioniert es nicht mehr.
Meine Frage:
Wäre es möglich wenn schon eine leere zeile nach der Hauptposition existiert, das diese eingefärbt wird wenn nicht dann soll sie eingefügt werden. ich hab maximal 600 ausgefüllte zeilenm in dennen was stehen kann.
Hier der Code
Private Sub CommandButton3_Click() ' Zeilen einfügen
Dim i As Long
Dim zEnde As Long
zEnde = Worksheets("DATENBANK").Range("B1").End(xlDown).Row
For i = zEnde To 3 Step -1
If Left(Worksheets("DATENBANK").Cells(i, 2).Value, 2) <> _
Left(Worksheets("DATENBANK").Cells(i - 1, 2).Value, 2) Then
Worksheets("DATENBANK").Rows(i).EntireRow.Insert
Worksheets("DATENBANK").Range(Cells(i, 1), Cells(i, 29)).Interior.Color = _
RGB(150, 150, 150)
End If
Next i
End Sub
Danke für eure Hilfe
mfg
Jürgen

AW: Zeile einfügen nach jeder Hauptposition
Michael

Hallo zusammen,
nachdem mein freundlicher Namensvetter nicht am Platz ist, habe ich mir Deinen Code kurz vorgenommen:
Private Sub CommandButton3_Click() ' Zeilen einfügen
Dim i As Long
Dim zEnde As Long
Dim zeile_leer As Boolean
zEnde = Worksheets("DATENBANK").Range("B" & Rows.Count).End(xlUp).Row
For i = zEnde To 3 Step -1
zeile_leer = Worksheets("DATENBANK").Cells(i, 2).Value = ""
If zeile_leer Then
Worksheets("DATENBANK").Range(Cells(i, 1), Cells(i, 29)).Interior.Color = _
RGB(150, 150, 150)
i = i - 1                   ' gleich eine Zeile weiter springen
Else
If Left(Worksheets("DATENBANK").Cells(i, 2).Value, 2) <> _
Left(Worksheets("DATENBANK").Cells(i - 1, 2).Value, 2) And _
Worksheets("DATENBANK").Cells(i - 1, 2).Value <> "" Then
Worksheets("DATENBANK").Rows(i).EntireRow.Insert
Worksheets("DATENBANK").Range(Cells(i, 1), Cells(i, 29)).Interior.Color = _
RGB(150, 150, 150)
End If
End If
Next i
End Sub
Dazu gibt es zu sagen:
a) es scheint mit ein paar Testdaten zu tun
b) die Variable zeile_leer wurde deshalb eingeführt, da es sein könnte, daß Du das Kriterium in der Zuweisung dieser Variablen ändern möchtest: es wird nur die Spalte B abgefragt, man könnte aber auch abfragen, ob die komplette Zeile leer ist - aber nicht bei der Hitze!
c) ich habe die Ermittlung von zEnde geändert: wenn Leerzeilen vorhanden sind, kommst Du mit Deinem alten Code nämlich *nicht* an die unterste, befüllte Zeile, sondern nur bis zu nächsten Leerzeile.
d) die Verschachtelung der IFs ist nicht gerade genial, aber es ist zu heiß für eine klare Logik
Grundsätzlich finde ich es vorteilhafter, unterschiedliche Informationen in unterschiedliche Spalten zu schreiben, also etwa A: 01,02 usw. und B:100,200 usw. Das hat den Vorteil, daß man nämlich die Spalten nach beiden Kriterien sortieren kann, und wenn sie denn sortiert sind, kann man den ganzen Vorgang mit etwas anderer Optik, aber ggf. automatischen Berechnungen versehen, nämlich mit "Teilergebnissen".
Schöne Grüße,
Michael

AW: Zeile einfügen nach jeder Hauptposition
Gerd

Hallo Jürgen!
Private Sub CommandButton3_Click() ' Zeilen einfügen
Dim i As Long
With Worksheets("DATENBANK")
For i = .Cells(.Rows.Count, 2).End(xlUp).Row To 3 Step -1
If Left(.Cells(i, 2).Value, 2) <> _
Left(.Cells(i - 1, 2).Value, 2) Then
If WorksheetFunction.CountBlank(.Rows(i)) = .Columns.Count Then
.Range(.Cells(i, 1), .Cells(i, 29)).Interior.Color = RGB(150, 150, 150)
Else
.Rows(i).EntireRow.Insert
End If
End If
Next i
End With
End Sub
Gruß Gerd

AW: Zeile einfügen nach jeder Hauptposition
Jürgen

Hallo Gerd
Hallo Michael
@ Gerd
Danke für den Code er funktioniert nur nicht so wie ich wollte, er fügt trotzdem immer eine Zeile ein färbt diese aber nicht mehr ein. Danke für deine Mühe aber Michael hat es genau getroffen
@Michael
Danke genau das wollte ich jetzt funktioniert er super, vielen vielen Dank
mfg
Jürgen

freut mich, danke für die Rückmeldung und
Michael

schöne Grüße rundrum,
Michael

Am Wochenende bin ich selten bis nie im Forum...
Michael

Hallo Jürgen,
... aber viele andere schon - super, dass Dir schon geholfen wurde!
@ andere Helfer: Danke für's "Einspringen" in den Faden!
LG
Michael

Zeile einfügen nach jeder Hauptposition
Jürgen

Hallo Leute
Wieder mal ein kleines Problem wo ich nicht hinbekomme.
Hab einige Codes gefunden und probiert, aber keinen hinbekommen der mir die abfrage macht und dann noch die zellen einfärbt
Ich habe eine Tabelle da muss ich immer von Hand nach jeder Hauptposition eine Zeile einfügen und Grau füllen.
Allerdings nervt das langsam da es meistens an die 30 zeilen sind.
Gibt es eine Möglichkeit dies mittel Commandbutton auszulösen?
In Spalte B stehen alle Positionsnummern,die erste Nummer ist die Hauptposition
01/001
01/002
02/001
02/002
02/003
.
.
.
Spalte A-AC müsste das ganze grau eingefärbt werden
Hat da jemand eine Idee?
Danke für eure Hilfe
mfg
Jürgen

AW: Zeile einfügen nach jeder Hauptposition
Michael

Hallo Jürgen!
Geht bspw. so:
Sub Trennzeile()
Dim i As Long
Dim zEnde As Long
zEnde = Worksheets("Tabelle1").Range("B1").End(xlDown).Row
For i = zEnde To 2 Step -1
If Left(Worksheets("Tabelle1").Cells(i, 2).Value, 2) <> _
Left(Worksheets("Tabelle1").Cells(i - 1, 2).Value, 2) Then
Worksheets("Tabelle1").Rows(i).EntireRow.Insert
Worksheets("Tabelle1").Range(Cells(i, 1), Cells(i, 29)).Interior.Color = _
RGB(190, 190, 190)
End If
Next i
End Sub
Nachdem Du keine weiteren Angaben geliefert hast, musst Du den Code für Deine Tabelle vermutlich noch etwas anpassen --> "Tabelle1" musst Du mit Deinem Tabellenblatt-Namen ersetzen; außerdem gehe ich davon aus, dass Du ab B1 gleich die Daten stehen hast, ohne Überschrift. Hast Du in Zeile 1 noch eine Überschrift, müsstest Du [For i = zEnde To 2 Step -1] auf [For i = zEnde To 3 Step -1] tauschen.
Das kannst Du natürlich auch mit einer Schaltfläche auslösen lassen. Passt?
LG
Michael

AW: Zeile einfügen nach jeder Hauptposition
Jürgen

Hallo Michael
Vielen Dank
Klappt wunderbar echt geil, hast mir den Tag gerettet.
mfg
Jürgen

Gerne, Danke für die Rückmeldung! LG Michael owT
Michael

.

AW: Zeile einfügen nach jeder Hauptposition
Jürgen

Hallo Leute
Michael hat mir ja ein geilen Code gebastelt der super funktioniert.
Jetzt ist nur ein Problem aufgetaucht, wenn man das makro ausgeführt hat und dann noch was ergänzt wird funktioniert es nicht mehr.
Meine Frage:
Wäre es möglich wenn schon eine leere zeile nach der Hauptposition existiert, das diese eingefärbt wird wenn nicht dann soll sie eingefügt werden. ich hab maximal 600 ausgefüllte zeilenm in dennen was stehen kann.
Hier der Code
Private Sub CommandButton3_Click() ' Zeilen einfügen
Dim i As Long
Dim zEnde As Long
zEnde = Worksheets("DATENBANK").Range("B1").End(xlDown).Row
For i = zEnde To 3 Step -1
If Left(Worksheets("DATENBANK").Cells(i, 2).Value, 2) <> _
Left(Worksheets("DATENBANK").Cells(i - 1, 2).Value, 2) Then
Worksheets("DATENBANK").Rows(i).EntireRow.Insert
Worksheets("DATENBANK").Range(Cells(i, 1), Cells(i, 29)).Interior.Color = _
RGB(150, 150, 150)
End If
Next i
End Sub
Danke für eure Hilfe
mfg
Jürgen

AW: Zeile einfügen nach jeder Hauptposition
Michael

Hallo zusammen,
nachdem mein freundlicher Namensvetter nicht am Platz ist, habe ich mir Deinen Code kurz vorgenommen:
Private Sub CommandButton3_Click() ' Zeilen einfügen
Dim i As Long
Dim zEnde As Long
Dim zeile_leer As Boolean
zEnde = Worksheets("DATENBANK").Range("B" & Rows.Count).End(xlUp).Row
For i = zEnde To 3 Step -1
zeile_leer = Worksheets("DATENBANK").Cells(i, 2).Value = ""
If zeile_leer Then
Worksheets("DATENBANK").Range(Cells(i, 1), Cells(i, 29)).Interior.Color = _
RGB(150, 150, 150)
i = i - 1                   ' gleich eine Zeile weiter springen
Else
If Left(Worksheets("DATENBANK").Cells(i, 2).Value, 2) <> _
Left(Worksheets("DATENBANK").Cells(i - 1, 2).Value, 2) And _
Worksheets("DATENBANK").Cells(i - 1, 2).Value <> "" Then
Worksheets("DATENBANK").Rows(i).EntireRow.Insert
Worksheets("DATENBANK").Range(Cells(i, 1), Cells(i, 29)).Interior.Color = _
RGB(150, 150, 150)
End If
End If
Next i
End Sub
Dazu gibt es zu sagen:
a) es scheint mit ein paar Testdaten zu tun
b) die Variable zeile_leer wurde deshalb eingeführt, da es sein könnte, daß Du das Kriterium in der Zuweisung dieser Variablen ändern möchtest: es wird nur die Spalte B abgefragt, man könnte aber auch abfragen, ob die komplette Zeile leer ist - aber nicht bei der Hitze!
c) ich habe die Ermittlung von zEnde geändert: wenn Leerzeilen vorhanden sind, kommst Du mit Deinem alten Code nämlich *nicht* an die unterste, befüllte Zeile, sondern nur bis zu nächsten Leerzeile.
d) die Verschachtelung der IFs ist nicht gerade genial, aber es ist zu heiß für eine klare Logik
Grundsätzlich finde ich es vorteilhafter, unterschiedliche Informationen in unterschiedliche Spalten zu schreiben, also etwa A: 01,02 usw. und B:100,200 usw. Das hat den Vorteil, daß man nämlich die Spalten nach beiden Kriterien sortieren kann, und wenn sie denn sortiert sind, kann man den ganzen Vorgang mit etwas anderer Optik, aber ggf. automatischen Berechnungen versehen, nämlich mit "Teilergebnissen".
Schöne Grüße,
Michael

AW: Zeile einfügen nach jeder Hauptposition
Gerd

Hallo Jürgen!
Private Sub CommandButton3_Click() ' Zeilen einfügen
Dim i As Long
With Worksheets("DATENBANK")
For i = .Cells(.Rows.Count, 2).End(xlUp).Row To 3 Step -1
If Left(.Cells(i, 2).Value, 2) <> _
Left(.Cells(i - 1, 2).Value, 2) Then
If WorksheetFunction.CountBlank(.Rows(i)) = .Columns.Count Then
.Range(.Cells(i, 1), .Cells(i, 29)).Interior.Color = RGB(150, 150, 150)
Else
.Rows(i).EntireRow.Insert
End If
End If
Next i
End With
End Sub
Gruß Gerd

AW: Zeile einfügen nach jeder Hauptposition
Jürgen

Hallo Gerd
Hallo Michael
@ Gerd
Danke für den Code er funktioniert nur nicht so wie ich wollte, er fügt trotzdem immer eine Zeile ein färbt diese aber nicht mehr ein. Danke für deine Mühe aber Michael hat es genau getroffen
@Michael
Danke genau das wollte ich jetzt funktioniert er super, vielen vielen Dank
mfg
Jürgen

freut mich, danke für die Rückmeldung und
Michael

schöne Grüße rundrum,
Michael

Am Wochenende bin ich selten bis nie im Forum...
Michael

Hallo Jürgen,
... aber viele andere schon - super, dass Dir schon geholfen wurde!
@ andere Helfer: Danke für's "Einspringen" in den Faden!
LG
Michael

Dialog-Beispiele
Bewerten Sie hier bitte das Excel-Portal