Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
572to576
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
572to576
572to576
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA-Code: Leerzeile suchen - evtl. löschen

VBA-Code: Leerzeile suchen - evtl. löschen
24.02.2005 15:11:39
Markus
Noch ein kleines Problem, und ich glaub muß mich doch langsam mal mit VBA beschäftigen
Es wäre nett, wenn mir noch einmal jemand helfen könnte.
Ich benötige einen VBA-Code, der eine Leerzeile zuerst sucht und dann löscht, jedoch nur, wenn in der Zeile obendran (also Leerzeile -1) in Spalte B ein Inhalt existiert.
Bekommt das jemand hin?
Hier hab ich mal so einen ähnlichen Code, mit dem man Leerzeilen sucht und löscht, so dass lediglich eine von mehreren hintereinander folgenden Leerzeilen stehen bleibt.
Vielleicht hilft der etwas weiter:
Dim z As Long
For z = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
If Application.CountA(Rows(z - 1 & ":" & z)) = 0 Then
Rows(z).Delete
End If
Next
End Sub
Schon jetzt vielen vielen Dank
Gruß
Markus

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-Code: Leerzeile suchen - evtl. löschen
Jan
Hi Markus,
Den Code hab ich mal angepaßt:

Sub löschen()
Dim z As Long
For z = 1 To Cells(65356, 2).End(xlUp).Row
If Worksheets("Tabelle1").Cells(z, 2) = "" And Worksheets("Tabelle1").Cells(z - 1, 2) <> "" Then
Rows(z).Delete
End If
Next
End Sub

Jan
leider ohne Erfolg
24.02.2005 15:51:16
Markus
Hi,
danke erstmal - funktioniert aber leider nicht!
Es bleibt an der Zeile "If Worksheets ...", obwohl ich die "Tabelle1" mit "TATU1" (so heißt mein Arbeitsblatt) ersetzt habe.
Woran kann das liegen?
Noch was, so weit ich das sehe fehlt der Bezug auf die Zelle in Spalte B (also Leerzeile -1). Der ist unbedingt notwendig, da ich auch "normale Leerzeilen" im Formular hab, die ich beibehalten möchte - bei denen steht jedoch in Leezeile -1 in Zelle von Spalte B kein Inhalt.
Bei denen, welche ich löschen will jedoch schon (also ein Inhalt in Zelle von Spalte B)
Gruß
Markus
Anzeige
AW: leider ohne Erfolg
24.02.2005 16:28:41
Dominic
Der Code war fast richtig!

Sub löschen()
Dim z As Long
For z = Cells(65356, 2).End(xlUp).Row To 1 Step -1
If Worksheets("TATU1").Cells(z, 2) = "" And Worksheets("TATU1").Cells(z - 1, 2) <> "" Then Rows(z).Delete
Next
End Sub

Cells(z , 2)'= Zeile z und Spalte "B"
Gruß
Dominic
(fast) super - danke
24.02.2005 17:00:03
Makus
Danke,
funktioniert zu gut – es löscht sogar mehr Zeilen als ich will.
Dies liegt aber an mir, hatten nen Denkfehler.
Ich hatte nicht dran gedacht, dass die Summenspalten in der Zelle in Spalte B auch keinen Inhalt besitzen. Diese werden folglich auch gelöscht.
Ich muß jetzt nur noch zusätzlich prüfen, ob in der darauf folgenden Zeile (also Leerzeile +1) in der Zelle in Spalte B etwas steht.
Dann darf die Leerzeile erst gelöscht werden.
Mal schauen, ob ich das alleine hin bekomme – ansonsten meld ich mich noch mal
Also nochmals besten Dank
Gruß
Markus
Anzeige
Danke fürs Rückmeldung!
24.02.2005 17:15:19
Dominic
Wenn man selber was ausprobiert dann lernt man am meisten! Wird nicht schwer sein!
Gruß
Dominic
brauche doch noch mal Hilfe!!!
25.02.2005 02:31:46
Markus
Hallo,
benötige doch noch mal Eure Hilfe!
Die entsprechenden Leerzeilen werden ja wie gewollt gelöscht, nur bringt der Code danach dann eine Fehlermeldung und der Bereich “If Worksheets … bis „Bezeichnung“ wird im VBA-Fenster gelb markiert.
Warum das? Was könnte hier falsch sein?
Sub löschen()
'Dim z As Long
For z = Cells(65356, 2).End(xlUp).Row To 1 Step -1
If Worksheets("TATU1").Cells(z, 2) = "" And Worksheets("TATU1").Cells(z - 1, 2) "" _
And Worksheets("TATU1").Cells(z + 1, 2) "" And Worksheets("TATU1").Cells(z - 1, 2) _
"Bezeichnung" Then Rows(z).Delete
Next
Ich hab auch schon versucht, dies zu unterdrücken, indem ich diese Befehlszeile vorangestellt habe:
„On Error Resume Next“
Hier läuft das Makro dann durch
Das Ergebnis ist aber dann aber, dass immer die 1. Zeile des Formulars gelöscht wird, obwohl sie eigentlich nach der Bedingung nicht gelöscht werden darf.
Muß wohl mit dem „Step-1“ zusammenhängen.
Kann mir da jemand einen Tip geben?
Schon jetzt vielen Dank
Gruß
Markus
Anzeige
AW: brauche doch noch mal Hilfe!!!
25.02.2005 11:09:48
Dominic
Hallo Markus,
nach Cells immer .value schreiben. Dann sollte es klappen!
Der Makro macht folgendes:

Sub löschen()
Dim z As Long 'Variable erstellen
For z = Cells(65356, 2).End(xlUp).Row To 1 Step -1 'Ermittlung des letzten Zeile und Schleife bis 1 (wenn umgekehrt dann wird dein Makro endlos laufen)
If Worksheets("TATU1").Cells(z, 2).value = "" And Worksheets("TATU1").Cells(z - 1, 2).value <> "" _
And Worksheets("TATU1").Cells(z + 1, 2).value <> "" And Worksheets("TATU1").Cells(z - 1, 2).value <> _
"Bezeichnung" Then Rows(z).Delete 'Prüfung und löschen
Next
End Sub

Gruß
Dominic
Anzeige
danke - aber leide immer noch nicht ganz
25.02.2005 12:02:58
Markus
Hi,
@Dominic - Vielen vielen Dank erstmal.
jetzt wird das Makro zwar ausgeführt und löscht auch die entsprechenden Leerzeilen, jedoch erscheint danach eine Fehlermeldung mit Kopf „Microsoft Visual Basic“ und Inhalt „400“ – eine Hilfe hierzu wird nicht erzeugt.
Ich hab eine solche Beispieldatei angehängt, damit Dir die Fehlermeldung mal selbst anschauen kannst.
https://www.herber.de/bbs/user/18749.xls
Vielleicht erklärt sichs dann von selbst.
Ich selbst komm hier leider nicht mehr weiter.
Hintergrund der ganzen Sache:
Durch die Übernahme von Daten wird jeweils pro Seite ein Seitenkopf erzeugt. Diesen hab ich auch per Makro schon gelöscht. Lediglich eine Leerzeile bleibt je nach Seitenumbruch im Bereich um Zeile 58, um Zeile 113, … stehen. Diese sollen jedoch weg.
Mein Makro geht dann auch noch weiter, aber das ist ja egal
Zur Verdeutlichung hab ich noch in Zeile 10, 18, noch zusätzlich eine solche Leerzeile eingefügt und farblich hinterlegt .
Also, vielleicht schaust mal danach, wär Dir / Euch eccht super dankbar.
Gruß
Markus
Anzeige
AW: danke - aber leide immer noch nicht ganz
25.02.2005 12:17:06
Dominic
Hallo Markus,
die Lösung ist einfach!
Fehler in der Zeile:
For z = Cells(65356, 2).End(xlUp).Row To 1 Step -1 'Sollte To 2 sein. Wieso?
Du prüfst ja auch eine Zelle in der vorherigen Zeile, also bei Zeile 1 auch Zeile 0, was nicht gibt!
Gruß
Dominic
Genial!!!
Markus
Super - danke nochmals für Deine Bemühungen
Funktioniert jetzt wunderbar!!!
Echt genial von Dir
Danke fürs Rückmeldung! o.T.
25.02.2005 13:47:17
Dominic
Gruß
Dominic

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige