Live-Forum - Die aktuellen Beiträge
Datum
Titel
23.04.2024 14:59:21
23.04.2024 14:47:39
23.04.2024 14:23:45
Anzeige
Archiv - Navigation
1068to1072
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

Automatisch Zeilen löschen

Automatisch Zeilen löschen
15.04.2009 10:26:27
nicospostbox
Hallo zusammen!
Ich habe folgendes Problem:
ich habe ein relativ komplexes Berechnungsmodell in Excel entwicklet, das sich über mehrere Tabellenblätter erstreckt. In diesem Modell wird jeweils ein Datensatz pro Zeile verarbeitet und ich habe 200 Zeilen vorgesehen.
Ich möchte jetzt, dass abhängig von der Anzahl der zu verarbeitenden Datensätze die überzähligen Leerzeilen in allen Sheets gelöscht werden. Wenn also nur 10 Datensätze verarbeitet werden sollen, möchte ich gerne die 190 Zeilen nach dem letzten Datensatz in allen Sheets per Knopfdruck löschen (die 190 leeren Zeilen mit tausenden #Div/0! 's stören mein ästhetisches Empfinden :-))!
Da ich mich mit VBA nur extrem rudimentär auskenne hab ich keine Ahnung, wie ich den Code hierfür aufbauen soll!
Wäre super, wenn mir jemand hier helfen könnte!
Grüße,
Nico

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Automatisch Zeilen löschen
15.04.2009 10:42:54
Oberschlumpf
Hi Nico
Versuch mal

Sub sbErrDel()
Dim liZeile As Integer
For liZeile = Cells(Rows.Count, DeineSpalteMitDIV/0AlsZahl).End(xlUp).Row To 1 Step -1
If IsError(Range("DeineSpalteMitDIV/0AlsBuchstabe" & liZeile)) Then
Rows(liZeile).Delete
End If
Next
End Sub


Hinweise:
DeineSpalteMitDIV/0AlsZahl = hier musst du die Spaltennummer eintragen, in der die Fehler auftreten - für Spalte A trägst du 1 ein, Spalte B = 2, usw
DeineSpalteMitDIV/0AlsBuchstabe = hier musst du die Spaltennummer eintragen, in der die Fehler auftreten - für Spalte A trägst du A ein, Spalte B = B, usw
Diese Code löscht alle Zeilen, in denen in der von dir angegebenen Spalte ein Fehler auftritt - also auch die Zeilen mit Fehler, in denen Daten vorhanden sind.
Am besten testest du mit einer Kopie deiner Datei.
Hilfts?
Ciao
Thorsten

Anzeige
AW: Automatisch Zeilen löschen
15.04.2009 10:58:44
nicospostbox
Hi Thorsten!
Danke vielmals!
Ich hab's aber noch nicht eingebaut und probiert! Löscht dieser Code die Leerzeilen auf ALLEN Blättern? Irgendwo müsste ich doch noch festlegen, dass dieser Code auch für andere Sheets gilt, oder? Kannst du mir sagen, wie das dann aussehen müsste?
Danke schonmal!
Nico
AW: Automatisch Zeilen löschen
15.04.2009 11:25:59
Oberschlumpf
Hi Nico
Der Code gilt nur fürs aktuelle Tabellenblatt.
Sorry, hatte übersehen, dass du ja eine Lösung für alle Blätter suchst.
Versuch es hiermit:

Sub sbErrDel()
Dim liZeile As Integer, liSheet As Integer
With ThisWorkbook
For liSheet = 1 to .Sheets.Count
For liZeile = .Sheets(liSheet).Cells(Rows.Count, DeineSpalteMitDIV/0AlsZahl).End(xlUp).Row  _
To 1 Step -1
If IsError(.Sheets(liSheet).Range("DeineSpalteMitDIV/0AlsBuchstabe" & liZeile)) Then
.Sheets(liSheet).Rows(liZeile).Delete
End If
Next
Next
End With
End Sub


(die hier im Code vorhandenen Zeilenumbrüche NICHT übernehmen)
Hilfts nun besser?
Ciao
Thorsten

Anzeige
AW: Automatisch Zeilen löschen
15.04.2009 11:50:05
nicospostbox
Perfekt - genau was ich gesucht habe!
Danke Thorsten!
Grüße,
Nico
AW: alternative Lösung
15.04.2009 12:05:08
Daniel
Hi
probiers mal so, allerdings dürfen die Zeilen mit Daten keine Formeln mit Fehlermeldungen enthalten:

Sub sbErrDel()
Dim liZeile As Integer, liSheet As Integer
With ThisWorkbook
For liSheet = 1 to .Sheets.Count
On error Resume Next
.Sheets(liSheet).Cells.Specialcells(xlcelltypeFormulas, 16).EntireRow.Delete
on Error Goto 0
Next
End With
End Sub


fürs Testen kannst du auch die beiden Zeilen mit "On Error" mal auskommentiern (ein Hochkomma ' davorsetzen)
diese Zeilen sind nur für den Fall drin, daß mal keine Fehler in der Datei vorkommen und sonst das Makro mit einem Fehler abbricht, weil keine Zellen gefunden werden.
Gruß, Daniel

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige