106543
10.12.2013, aktualisiert um 11:34:20 Uhr
3657
6
0
VBA - Sämtliche Leerzeilen in Tabelle löschen
Hallo,
ich hab mal wieder ein kleineres Problem, bei dem meine Syntax anscheinend irgendwie nicht funktioniert wie ich mir das denke -.-
Mal seh´n, was ihr hier beitragen könnt/wollt :D
Ich habe eine Tabelle in der Leerzeilen vorhanden sind, z.B.
um das mal stümperhaft abzubilden.
was ich mir jetzt dachte, war, dass ich alle Zeile von 1000 aufwärts abgehe, gucke ob in der Zelle A/entsprechende Zahl ein Wert steht, wenn nicht soll die Zeile gelöscht werden
das ist was ich zustande gebracht habe...
ich blicke bei dem Code nicht mehr durch :D
vielleicht hat ja jemand von euch ein kleines Schnipselchen für mich, was schnell mal läuft...
Grüße
Exze
ich hab mal wieder ein kleineres Problem, bei dem meine Syntax anscheinend irgendwie nicht funktioniert wie ich mir das denke -.-
Mal seh´n, was ihr hier beitragen könnt/wollt :D
Ich habe eine Tabelle in der Leerzeilen vorhanden sind, z.B.
A B C
1) Hier steht etwas Text Hier steht eine Zahl Hier steht ein Datum
2) Hier steht etwas Text Hier steht eine Zahl Hier steht ein Datum
3)
4) Hier steht etwas Text Hier steht eine Zahl Hier steht ein Datum
5)
6)
7) Hier steht etwas Text Hier steht eine Zahl Hier steht ein Datum
8)
9) Hier steht etwas Text Hier steht eine Zahl Hier steht ein Datum
10) Hier steht etwas Text Hier steht eine Zahl Hier steht ein Datum
was ich mir jetzt dachte, war, dass ich alle Zeile von 1000 aufwärts abgehe, gucke ob in der Zelle A/entsprechende Zahl ein Wert steht, wenn nicht soll die Zeile gelöscht werden
das ist was ich zustande gebracht habe...
Dim sLetzte As String
sLetzte = Range("A" & Range("A65536").End(xlUp).Column)
For i = 1000 To 2 Step -1
If ActiveWorkbook.ActiveSheet.Cells(i, sLetzte).Value = "" Then
Rows(i).EntireRow.Delete
End If
Next
vielleicht hat ja jemand von euch ein kleines Schnipselchen für mich, was schnell mal läuft...
Grüße
Exze
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 224146
Url: https://administrator.de/forum/vba-saemtliche-leerzeilen-in-tabelle-loeschen-224146.html
Ausgedruckt am: 05.02.2025 um 00:02 Uhr
6 Kommentare
Neuester Kommentar
Hallo Exce,
das Problem was du hast ist folgendes: Bei jedem Durchlauf der Schleife löschst du eine Zeile aus dem Workbook, d.h. nach jedem Durchlauf stimmt die Zeilennummer nicht mehr da du ja gerade eine Zeile gelöscht hast.
Du machst es nun folgendermaßen: Du iterierst über die Zellen und fügst sie zu einer MultiSelection hinzu, und erst nach dem Durchlauf aller Zellen löschst du die Multi-Selection.
Grüße Uwe
das Problem was du hast ist folgendes: Bei jedem Durchlauf der Schleife löschst du eine Zeile aus dem Workbook, d.h. nach jedem Durchlauf stimmt die Zeilennummer nicht mehr da du ja gerade eine Zeile gelöscht hast.
Du machst es nun folgendermaßen: Du iterierst über die Zellen und fügst sie zu einer MultiSelection hinzu, und erst nach dem Durchlauf aller Zellen löschst du die Multi-Selection.
Sub delEmptyRows()
Dim rngCells As Range, cell As Range, rngCombined As Range, sheet as Worksheet
' Hier das gewünschte Tabellenblatt angeben
set sheet = Worksheets(1)
Set rngCells = sheet.Range("A1", sheet.Range("A65535").End(xlUp))
For Each cell In rngCells
If cell.Value = "" Then
If rngCombined Is Nothing Then
Set rngCombined = cell.EntireRow
End If
Set rngCombined = Union(rngCombined, cell.EntireRow)
End If
Next
If Not rngCombined Is Nothing Then
rngCombined.Delete
End If
End Sub
Grüße Uwe
Zitat von @106543:
Noch eine kurze Frage:
Der Code wird immer fur das aktive Workbook bzw. das aktive Worksheet ausgeführt oder ?
Ja, obiger Code läuft nur im Code eines Tabellenblattes, wenn das nicht gewünscht ist lässt es sich aber einfach anpassen, hierzu passt du in folgendem Code einfach das Sheet in Zeile 3 an, in Zeile 4 werden dann die Ranges entsprechend referenziert, und der Code läuft dann auch in anderen Modulen.Noch eine kurze Frage:
Der Code wird immer fur das aktive Workbook bzw. das aktive Worksheet ausgeführt oder ?
Sub delEmptyRows()
Dim rngCells As Range, cell As Range, rngCombined As Range, sheet as Worksheet
set sheet = Worksheets(1)
Set rngCells = sheet.Range("A1", sheet.Range("A65535").End(xlUp))
For Each cell In rngCells
If cell.Value = "" Then
If rngCombined Is Nothing Then
Set rngCombined = cell.EntireRow
End If
Set rngCombined = Union(rngCombined, cell.EntireRow)
End If
Next
If Not rngCombined Is Nothing Then
rngCombined.Delete
End If
End Sub