Geht es geschmeidiger?
14.11.2015 18:52:59
PQuest:-)
mit dem u.a. Code lösche ich in einer Tabelle alle Leerzeilen. Ich weiss nicht wieviele Zeilen bzw. Spalten die Tabelle enthält. Darum ermittel ich erst die letzte Zeile bzw. Spalte. Dann werden die Zellen zeilenweise auf Inhalt kontrolliert. Hat die Zelle Inhalt, wird sofort die Zeile gewechselt und die Löschvariable DelRow auf False gesetzt. Ist kein Inhalt vorhanden, wird die Löschvariable auf True gesetzt und die nächste Zelle der Zeile geprüft usw.
Ist die Zeile leer (DelRow=True), wird die Zeile gelöscht und die Gesamtzahl der Zeilen und die der aktuell zu prüfenden Zeile um 1 verringert um der Löschung Rechnung zu tragen.
Damit sich das ganze nicht in einer Endloschleife verhakt, gibt es noch die IF iRow=lngLastRow Abfrage.
Private Sub DelEmptyRow()
Dim ws As Worksheet
Dim lngLastRow As Long, lngLastCol As Long, iRow As Long, iCol As Long
Dim DelRow As Boolean
Set ws = Worksheets("Roh")
DelRow = False
lngLastRow = ws.UsedRange.SpecialCells(xlCellTypeLastCell).Row
lngLastCol = ws.UsedRange.SpecialCells(xlCellTypeLastCell).Column
For iRow = 1 To lngLastRow
For iCol = 1 To lngLastCol
If Not (IsEmpty(Cells(iRow, iCol))) Then
DelRow = False
Exit For
Else
DelRow = True
End If
Next
If DelRow = True Then
Rows(iRow).Delete
lngLastRow = lngLastRow - 1
If iRow = lngLastRow Then
Exit For
Else
iRow = iRow - 1
DelRow = False
End If
End If
Next
End Sub
Es funktioniert alles, wie es soll. Meine Frage lautet schlicht und ergreifend, ob man das Ganze kürzer oder eleganter machen kann.Wer sich über diese Frage wundert, dem sei gesagt, dass ich einfach nur meine Kenntnisse verbessern möchte und durch Fragen wird man schlauer :-)
Danke,
PQuest:-)