AW: Sortieren mit Leerzeilen
22.08.2008 09:59:00
fcs
Hallo Dietmar,
Leerzeilen in Exceltabellen, die man sortieren möchte sind etwas was du schnellstens vergessen soltest.
Einfacher ist es Zeilen mit bedingter Formatierung hervorzuheben, wenn dies die Lesbarkeit einer Tabelle erleichtern soll. Diese funktioniert dann auch unabhängig von der Sortierung, wenn man es richtig macht.
Was noch verhältnismäßig einfach per Makro umgesetzt werden kann ist das Einfügen und ggf. Formatieren von Leerzeilen in regelmäßigen Abständen nach dem Sortieren.
Beispiel-Makro:
Sub Sortieren()
'Bereich sortieren und Leerzeilen einfügen
Dim wks As Worksheet, rngBereich As Range, lngZeile As Long, lngI As Long
Const lngSchritt As Long = 5 'Zeilenabstand für Leerzeilen
On Error GoTo Fehler
Set wks = ActiveSheet
With wks
'Sortierbereich (Zelle A1 bis letzte Zeile Spalte A inkl. Spalte G)
Set rngBereich = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp).Offset(0, 6))
'Sortieren
With rngBereich
'leere Zellen ohne Füllfarbe
.Cells.SpecialCells(xlCellTypeBlanks).Interior.ColorIndex = xlColorIndexNone
'Bereich sortieren
.Sort key1:=.Range("A1"), order1:=xlAscending, _
Key2:=.Range("C1"), order2:=xlAscending, _
Header:=xlYes
End With
'letzte datenzeile Spalte A
lngZeile = .Cells(.Rows.Count, 1).End(xlUp).Row
'Leerzeilen einfügen
For lngI = 1 To Int((lngZeile - rngBereich.Row) / lngSchritt)
'Einfüge-Zeilennummer berechnen
lngZeile = rngBereich.Row + lngI * lngSchritt + lngI
'Zeile einfügen
.Rows(lngZeile).Insert
'Leerzeile einfärben (6 = gelb)
.Range(.Cells(lngZeile, 1), .Cells(lngZeile, 7)).Interior.ColorIndex = 6
Next
End With
'Fehlerbehandlung
Fehler:
If Err.Number 0 Then
Select Case Err.Number
Case 1004 'Falls im bereich keine Leerzellen vorhanden sind
Resume Next
Case Else
MsgBox "Fehler-Nr: " & Err.Number & vbLf & Err.Description
End Select
End If
End Sub
Gruß
Franz