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

Geht es geschmeidiger?

Geht es geschmeidiger?
14.11.2015 18:52:59
PQuest:-)
Hallo,
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:-)

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
mit CountA prüfen ob Zeile leer ist ...owT
14.11.2015 19:14:36
Matthias

AW: Geht es geschmeidiger?
14.11.2015 19:23:21
Daniel
HI
löschen von Zeilen am geschmeidigsten mit Duplikate-Entfernen:
With ActiveSheet.Usedrange
With .Columns(.columns.count + 1)
.FormulaR1C1="=IF(CountA(RC1:RC[-1])=0,0,Row())"
.Cells(1, 1).Value = 0
.EntireRow.RemoveDuplicates .column, xlno
.ClearContents
end With
End With
Gruss Daniel

hier nochmal genauer ...
14.11.2015 19:26:38
Matthias
Hallo
Hier mal noch ein Bsp.Code
Dim x
For x = Tabelle1.UsedRange.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
If Application.WorksheetFunction.CountA(Rows(x)) = 0 Then
MsgBox "Zeile " & x & " ist leer"
Else
MsgBox "Zeile " & x & " ist nicht leer"
End If
Next
Statt der Box kannst Du ja auch löschen.
Gruß Matthias

Anzeige
Besten Dank...
14.11.2015 20:09:07
PQuest:-)
da sieht man mal wieder, wo eine eingeschränkte Sichtweise hinführt...zu x Zeilen Code, wo nur x/10 Zeilen nötig wären ;-)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige