Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Löschen von leeren Zeilen in Tabellen

Löschen von leeren Zeilen in Tabellen
03.03.2017 09:32:44
leeren
Hallo zusammen!
Ich habe folgendes Problem ich habe ein Excel-Sheet, dass 3 Tabellen enthält die untereinander mit 3 Leerzeilen Abstand stehen. Diese Tabellen werden immer unterschiedlich befüllt. Ich möchte jetzt einen Button haben, der die Leerzeilen in allen 3 Tabellen löscht und gleichzeitig, falls eine Tabelle komplett unausgefüllt bleibt diese auch löscht.
Gebastelt habe ich jetzt folgendes:

Sub KalkulationAnpassen()
Dim i As Integer
For i = 8 To 42
If Range("A" & i).Value = "" Then
Range("A" & i, "L" & 42).Select  'Tabelle 1 geht bis Zeile 42
Selection.ClearContents
Range("A" & i, "L" & 42).Select
Selection.Delete shift:=xlUp
Application.CutCopyMode = False
i = 42
Else
End If
If Range("B2").Value = "" Then
Range("A46", "L89").Select
Selection.ClearContents
Range("A46", "L89").Select
Selection.Delete shift:=xlUp
Application.CutCopyMode = False
End If
Next i
End Sub

Die zweite IF-Schleife prüft, ob die zweite Tabelle leer ist und komplett gelöscht wird. Das passiert natürlich statisch. Aber wenn die for Schleife einen Bereich löscht, da die erste Tabelle nicht komplett ausgefüllt ist bis Zeile 42, ist die zweite IF- Schleife für den A**** :D
Ich hoffe das wird hier nicht gerade zu viel oder zu kompliziert. Ich hab mir jetzt überlegt mehrere Variablen zu nehmen die als Zählvariable den zu löschenden Bereich der Tabelle 2 ermitteln. Allerdings wird mir das zu kompliziert für ein eigentlich simples löschen von Bereichen.
Jemand eine andere Idee? :D :D
Danke im voraus!

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Löschen von leeren Zeilen in Tabellen
03.03.2017 09:49:25
leeren
hi
Solche "Lösch-Schleifen" lässt man i.d.R. von unten nach oben laufen, so dass sich die Zeilen nicht verschieben.
For i = 42 To 8 Step -1
Für die weitere Hilfe bitte ich um eine Beispieldatei.
cu
Chris
AW: Löschen von leeren Zeilen in Tabellen
03.03.2017 09:57:20
leeren
Das ist schonmal eine Gute Idee.
Hier die Beispiel-Datei. Habe mit grün markiert was stehen bleiben soll und mit rot was rausgelöscht werden soll.
https://www.herber.de/bbs/user/111925.xlsm
AW: Löschen von leeren Zeilen in Tabellen
03.03.2017 10:28:36
leeren
Hi
wenn die Datei so stimmt, müssen alle Zeilen gelöscht werden, bei denen:
- in Spalte K der #dif/0-Fehler steht und gleichzeitig die Spalte B leer ist.
das würde dann mit diesem Code funktionieren:
Sub NichtBenötigteZeilenLöschen()
With Sheets("Kalkulation")
Intersect(.Columns(2).SpecialCells(xlCellTypeBlanks).EntireRow, _
.Columns(11).SpecialCells(xlCellTypeFormulas, 16).EntireRow).Delete
End With
End Sub

Anzeige
AW: Löschen von leeren Zeilen in Tabellen
03.03.2017 10:36:50
leeren
Danke! Viel viel einfacher!!! :)
3 Zeilen Code anstatt 30!
AW: Löschen von leeren Zeilen in Tabellen
03.03.2017 11:03:54
leeren
eigentlich nur eine.
die WITH-Klammer könnte weggelassen werden und zählt daher meiner Ansicht nach nicht zum effektiven Code, das ist "nur" Komfort.
Gruß Daniel
AW: Löschen von leeren Zeilen in Tabellen
03.03.2017 11:22:00
leeren
Hier mal meine Lösung vielleicht hilft es ja auch anderen:
Sub KalkulationAnpassen()
If Range("B52").Value = "" Then
Range("A90", "L133").Select
Selection.ClearContents
Range("A90", "L133").Select
Selection.Delete shift:=xlUp
Application.CutCopyMode = False
Range("A46", "L89").Select
Selection.ClearContents
Range("A46", "L89").Select
Selection.Delete shift:=xlUp
Application.CutCopyMode = False
Else
If Range("B96").Value = "" Then
Range("A90", "L133").Select
Selection.ClearContents
Range("A90", "L133").Select
Selection.Delete shift:=xlUp
Application.CutCopyMode = False
Else
End If
End If
With Sheets("Kalkulation")
Intersect(.Columns(2).SpecialCells(xlCellTypeBlanks).EntireRow, _
.Columns(11).SpecialCells(xlCellTypeFormulas, 16).EntireRow).Delete
End With
End Sub

Anzeige
AW: Löschen von leeren Zeilen in Tabellen
03.03.2017 11:31:32
leeren
Hi
kleiner Tip:
wenn du Code aufzeichnest, überarbeite ihn noch dahingehend, dass du alle Selections und Selects entfernst und die Zellbereiche direkt referenzierst.
die Selections und Selects muss der Recorder aufzeichnen, weil wir "Mausschubser" so arbeiten, aber in VBA braucht man das nicht.
außerem, wenn man Zellen komplett löscht, ist es nicht notwendig vorher diese auch noch zu leeren.
dein Code würde dann so aussehen:
If Range("B52").Value = "" Then
Range("A90", "L133").Delete shift:=xlUp
Range("A46", "L89").Delete shift:=xlUp
Else
If Range("B96").Value = "" Then Range("A90", "L133").Delete shift:=xlUp
End If
das ist nicht nur kürzer, sondern auch viel schneller in der Bearbeitung und übersichtlicher, dh Fehler oder Verbessungsmöglichkeiten fallen dir besser auf.
Gruß Daniel
Anzeige

321 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige