AW: Zeile einfügen nach jeder Hauptposition
05.07.2015 17:45:36
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