Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1600to1604
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

Zeilen löschen

Zeilen löschen
19.01.2018 10:04:19
parza
Hallo Fachleute,
ich bin auf der Suche nach einer Lösung zum automatischen Löschen von Zeilen. Im Forum habe ich nichts gefunden, dass tatsächlich dem gewünschten entspricht bzw. ich kann es auf Grund meiner nicht vorhandenen vba-Kenntnisse nicht entsprechend umschreiben
Eine Datei besteht aus verschiedenen Tabellenblättern, hier stehen in den Spalten A bis G in jeder Zeile Grunddaten. Ziel ist es jeweils ab der Spalte H zu überprüfen, ob in der entsprechenden Zeile noch eine Eintragung ist. Wenn keine Eintragung ist, soll die ganze Zeile gelöscht werden.
In der Anlage befindet sich nur eine Testdatei; d.h. im Original kann können durchaus mehrere Tausend Datensätze verstreut untereinander stehen. Daher bringt auch das Löschen über Filter nicht wirklich ein Ergebnis.
Im Optimalfall alle Registerkarten gleichzeitig. Allerdings sind diese leicht variabel aufgebaut. Oder dass jede Registerkarte seinen eigenen Löschbutton erhält.
Für eure Hilfe wäre ich dankbar.
parza
https://www.herber.de/bbs/user/119095.xls

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen löschen
19.01.2018 11:02:48
Daniel
Hi
im Prinzip mit diesem Code.
er passt sich automatisch an den aufbau der Tabelle an (Startzeile, Endzeile, letzte Spalte)
Sub löschen()
Dim sh As Worksheet
Dim z1 As Long, z2 As Long, sp As Long
For Each sh In ThisWorkbook.Worksheets
If sh.Cells(1, 1).Value = "" then
z1 = sh.Cells(1, 1).End(xlDown).Row + 1
else
z1 = 2
end if
z2 = sh.Cells(sh.Rows.Count, 1).End(xlUp).Row
sp = sh.Cells.SpecialCells(xlCellTypeLastCell).Column + 1
With sh.Cells(z1, sp).Resize(z2 - z1 + 1, 1)
.FormulaR1C1 = "=If(CountA(RC8:RC[-1])=0,1,"""")"
.Formula = .Value
.EntireRow.Sort key1:=.Cells(1, 1), order1:=xlAscending, Header:=xlNo
If .Cells(1, 1).Value = 1 Then
.SpecialCells(xlCellTypeConstants, 1).EntireRow.Delete
End If
.ClearContents
End With
Next
End Sub
Gruß Daniel
Anzeige
AW: Zeilen löschen
19.01.2018 11:44:39
parza
Hallo Daniel,
vielen Dank für die rasche Lösung. Es funktioniert fast genial: Eigenartiger Weise wird bei Tabellenblatt 4 nichts gelöscht.
Noch ein Problem ist aufgetaucht, das du aber nicht wissen konntest. In der Datei befindet sich noch ein Tabellenblatt, das anders aufgebaut ist und ich deshalb nicht in die Beispieldatei mit aufgenommen habe. Hier kommt dann ein Debugfehler (With sh.Cells(z1, sp).Resize(z2 - z1 + 1, 1).
Hast du hierzu noch eine Idee? Z.b. Das jedes Tabellenblatt einzeln angesprochen wird?
Nochmals vielen Dank, parza
AW: Zeilen löschen
19.01.2018 13:00:28
Daniel
Hi
naja, da ich nicht weiß, wie dein Tabellenblatt aufgebaut ist, kann ich dir ja jetzt weiterhelfen.
wenn du bestimmte Blätter hast, die anders behandelt werden sollen als im normal, müsstest du in der Schleife den aktuellen Blattnamen abfragen und entscheiden, was getan werden soll:
hier werden beispielsweise Blatt "TabelleA" und "TabelleB" von der Löschaktion ausgenommen

Dim sh As Worksheet
Dim z1 As Long, z2 As Long, sp As Long
For each sh in thisworbook.worksheets
Select Case sh.Name
Case "TabelleA", "TabelleB"
Case else
If sh.Cells(1, 1).Value = "" then
z1 = sh.Cells(1, 1).End(xlDown).Row + 1
else
z1 = 2
end if
z2 = sh.Cells(sh.Rows.Count, 1).End(xlUp).Row
sp = sh.Cells.SpecialCells(xlCellTypeLastCell).Column + 1
With sh.Cells(z1, sp).Resize(z2 - z1 + 1, 1)
.FormulaR1C1 = "=If(CountA(RC8:RC[-1])=0,1,"""")"
.Formula = .Value
.EntireRow.Sort key1:=.Cells(1, 1), order1:=xlAscending, Header:=xlNo
If .Cells(1, 1).Value = 1 Then
.SpecialCells(xlCellTypeConstants, 1).EntireRow.Delete
End If
.ClearContents
end With
End Select
Next
Gruß Daniel
Anzeige
AW: Zeilen löschen
19.01.2018 14:25:07
parza
Danke, ich habe nochmals eine Datei hochgeladen. Diese ist der Originaldatei sehr ähnlich.
Nicht gelöscht werden sollten die Registerkarten "AZK_Verlust_Gewinn" und "Schulen".
Vielleicht hilft dies weiter, parza
https://www.herber.de/bbs/user/119104.xls
AW: Zeilen löschen
19.01.2018 16:49:19
Daniel
Hi
passt doch.
du hast nur einen Tipfehler drin, es muss heißten:
For each sh in thisworkbook.worksheets
du solltest Option Explicit verwenden, dann bekommst du solche Fehler direkt angezeigt.
Gruß Daniel
AW: Zeilen löschen
19.01.2018 17:39:08
parza
Danke für den Hinweis. Wer Augen hat ...
Mit dem anderen Tipp kann ich leider nicht anfangen wegen meiner mangelnden vba-Kenntnisse.
Interessieren würde mich natürlich schon, wo in deiner Programmierung steht, dass er die Spalten A bis G auslassen soll?
Anzeige
AW: Zeilen löschen
19.01.2018 19:06:06
Daniel
Option Explicit ist eine Einstellung in VBA, die dich zwingt, alle verwendeten Variablen vorab zu deklarieren.
Klingt zwar beschränkend, hat aber den Vorteil, dass solche Tippfehler automatisch erkannt werden und somit schneller bereinigt werden können.
Einfach Mal googeln.
Welche Spalten überprüft werden, wird in der Zeile mit .FormulaR1C1 festgelegt.
Dort schreibe ich in die Zellen der ersten freien Spalte eine Formel, dieit der Funktion Anzahl2 überprüft, wie viele Zellen einen Wert haben.
Der überprüfte Bereich steht dort normal als Zelladresse, aber eben in R1C1-Schreibweise und nicht in der üblichen A1-Schreibweise.
Gruß Daniel
Anzeige
AW: Zeilen löschen
20.01.2018 07:44:17
parza
Hallo Daniel,
vielen Dank für deine Mühe: Option Explicit habe ich gegoogelt und vom Prinzip verstanden, aber keine Ahnung von der Umsetzung.
FormulaR1C1 Schreibeweise habe ich auch verstanden und an einem Beispiel angewendet, hat auch funktio-niert. Allerdings kommt zum Schluss eine Degub-Meldung bei .ClearContents
LG, parza
AW: Zeilen löschen
20.01.2018 17:53:50
Daniel
wenn du mit Option Explict arbeiten willst, musst du unter EXTRAS - OPTONEN - EDITOR das Häkchen bei "Variablendeklaration erforderlich" setzen.
Dann ist bei jedem neuen Projekt das Option Explicit automatisch aktiviert.
wenn du es für eine bestehende Datei aktivieren willst, musst du einfach "Option Explicit" in jedem Modul in die erste Zeile schreiben.
zu der Fehlermeldung kann ich dir nicht viel sagen.
ich weiß ja nicht mal, welche Fehlermeldung du bekommst.
Sei mal ein bisschen informativer.
Gruß Daniel
Anzeige
AW: Zeilen löschen
21.01.2018 06:53:25
parza
https://www.herber.de/bbs/user/119124.xls
Hi Daniel,
die Fehlermeldung im Debug ist bei mir gelb unterlegt bei „.ClearContents“
Ich glaube, ich habe den Fehler gefunden. Es hängt wohl damit zusammen, wo und ob in bestimmten Zellen etwas steht.
In der hochgeladenen Testdatei kannst du es nachvollziehen. Ich habe zwei Zellen eingefärbt (rot und gelb):
Steht in rot und gelb etwas: klappt es
Steht nur in gelb etwas: klappt
Steht nur in rot etwas: klappt es nicht
Besser kann ich es nicht erklären.
Danke, parza
Anzeige
AW: Zeilen löschen
21.01.2018 11:46:46
Daniel
Hi
der Fehler tritt auf, wenn wenn alle Zeilen gelöscht werden.
lass das .ClearContents einfach weg. Ich sehe grade, dass du das hier nicht brauchst, weil die Zellen in den Zeilen die stehen bleiben, leer sind.
beachte weiterhin, dass ich davon ausgegangen bin, dass die erste Zeile in deiner Liste eine Überschriftenzeile ist, die nicht geprüft wird.
Gruß Daniel
AW: Zeilen löschen
21.01.2018 12:25:35
parza
Hi,
danke, dass du dir so viel Zeit genommen hast.
Ich habe relavit viele Dateien, in denen es das "leere-Zeilen-Problem" gibt. In der Regel steht auch in der ersten Zeile eine Überschrift (wenige Ausnahmen gibt es).
Da ich deine Programmierung jetzt ein ganz kleines bisschen verstanden habe, hoffe ich, deine Programmierung nun selbst ein bisschen adaptieren zu können.
Noch einen schönen Sonntag, parza
Anzeige
AW: Zeilen löschen
19.01.2018 11:14:09
Luschi
Hallo jonnygoo,
Du solltest mal Deine Daten-Link-Sammlung auf Aktualität überprüfen.
Der Link gehört zur Kategorie 'Ur-Ur-Uralt' und ist nicht mehr erreichbar!
Gruß von Luschi
aus klein-Paris
AW: Zeilen löschen
19.01.2018 11:18:11
Luschi
Hallo jonnygoo,
sorry, wenn man den Link in die Zwischenablage kopiertund dann in das Browser-Eingabefeld einfügt, dann funktioniert er, aber nur draufklicken eben nicht.
Gruß von Luschi
aus klein-Paris
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige