Herbers Excel-Forum - das Archiv

Makro zum Zeilen löschen

Bild

Betrifft: Makro zum Zeilen löschen
von: Thomas Lohr

Geschrieben am: 14.04.2005 14:05:35
Guten Tag !
Folgendes Problem:
ich habe ein Excel-File, vollgepackt mit lauter Zahlen. Excel soll nun jede Zeile durchsuchen. Taucht in einer Zeile "-99999" oder eine Zahl zwischen 0 und 19 auf, so soll Excel die Zeile löschen. Falls nicht soll Excel die Suche in der nächsten Zeile fortsetzen. Und das solange, bis keine Zeilen mehr da sind. Ist zwar wahrscheinlich nicht schwer, da ich aber von VBA ziemlich wenig Ahnung habe...
Vielen Dank, Tom
Bild

Betrifft: Kleiner Nachtrag
von: Lohr Thomas
Geschrieben am: 14.04.2005 14:07:31
Kleiner Nachtrag: Excel soll nicht die ganze Zeile dursuchen, sondern nur die Daten in den Spalten D,G,J auf die Bedingung durchprüfen.
Danke !
Bild

Betrifft: AW: Kleiner Nachtrag
von: Reinhard

Geschrieben am: 14.04.2005 14:16:30
Hallo Thomas
Sub tt()
letzte = IIf(Range("d65536") <> "", 65536, Range("d65536").End(xlUp).Row)
For z = letzte To 1 Step -1
For s = 4 To 10 Step 3 '4=d,7=g,j=10
Select Case Cells(z, s)
Case 0 To 19
Cells(z, s).EntireRow.Delete
Case -9999
Cells(z, s).EntireRow.Delete
End Select
Next s
Next z
End Sub

Viele Grüße
Reinhard
Bild

Betrifft: Fehlermeldung
von: Tom
Geschrieben am: 14.04.2005 14:30:10
Hmm, da bringt er leider eine Fehlermeldung in der zweiten Zeile des Makros: Syntaxfehler.
Für was ist denn die zweite Zeile des Makros gut ?
Bild

Betrifft: AW: Fehlermeldung
von: Reinhard

Geschrieben am: 14.04.2005 14:46:40
Hallo Tom,
da wird die letzte befüllte zeile ermittelt, Syntaxfehler ist bei mir nicht. Aber wegen der 0 habe ich es nochmal geändert.
Sub tt()
letzte = IIf(Range("a65536") <> "", 65536, Range("a65536").End(xlUp).Row)
For z = letzte To 1 Step -1
For s = 4 To 10 Step 3 '4=d,7=g,j=10
Select Case Cells(z, s)
Case 0 To 19
If Cells(z, s) <> "" Then
Cells(z, s).EntireRow.Delete
Exit For
End If
Case -9999
Cells(z, s).EntireRow.Delete
Exit For
End Select
Next s
Next z
End Sub

Gruß
Reinhard
Bild

Betrifft: AW: Fehlermeldung
von: Reinhard
Geschrieben am: 14.04.2005 14:50:04
Hallo Tom,
axo, 8.0 kennt iif noch nicht, dann nimm anstatt der IIF-Zeile folgendes:
letzte = Range("a65536").End(xlUp).Row
Viele Grüße
Reinhard
Bild

Betrifft: AW: Fehlermeldung
von: Holger
Geschrieben am: 14.04.2005 16:55:05
Hi,
IIF gibt es auch in Excel 97
mfg Holger
Bild

Betrifft: AW: Kleiner Nachtrag
von: WernerB.

Geschrieben am: 14.04.2005 14:34:05
Hallo Thomas,
wie gefällt Dir das?
Sub Thomas()
Dim i As Long, laR As Long, _
j As Byte, _
loesch As Boolean
Application.ScreenUpdating = False
laR = Cells(Rows.Count, 4).End(xlUp).Row
If Cells(Rows.Count, 7).End(xlUp).Row > laR Then _
laR = Cells(Rows.Count, 7).End(xlUp).Row
If Cells(Rows.Count, 10).End(xlUp).Row > laR Then _
laR = Cells(Rows.Count, 10).End(xlUp).Row
For i = laR To 1 Step -1
loesch = False
For j = 4 To 10 Step 3
If Application.IsNumber(Cells(i, j).Value) = True Then
If Cells(i, j).Value = -99999 Then loesch = True
If Cells(i, j).Value >= 0 And Cells(i, j).Value <= 19 Then loesch = True
End If
Next j
If loesch = True Then Rows(i).Delete
Next i
Application.ScreenUpdating = True
End Sub

Viel Erfolg wünscht
WernerB.
P.S.: Dieses Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter !
Bild

Betrifft: AW: Kleiner Nachtrag
von: Tom
Geschrieben am: 14.04.2005 14:37:40
Grummel, grummel, wieder Syntaxfehler. Liegt wohl an meiner Uraltkiste !

Grüße, Tom
Bild

Betrifft: AW: Kleiner Nachtrag
von: WernerB.

Geschrieben am: 14.04.2005 14:47:53
Hallo Thomas,
Deine Excelversion sollte schon Excel 97 oder jünger ("Ab 8.0") sein, sonst hast Du schlechte Karten.
Meinen Makrovorschlag habe ich ohne Beanstandung erfolgreich getestet.
Natürlich kenne ich auch die besonderen Gegebenheiten Deines Tabellenblattes nicht (z.B. Verwendung verbundener Zellen oder ähnlichen Kram), so dass aus der Ferne ohne Deine Datei schwerlich eine Aussage zu der Fehlerursache getroffen werden kann.

Gruß
WernerB.
 Bild
Excel-Beispiele zum Thema "Makro zum Zeilen löschen"
Zeilenhöhe in cm festlegen Summe gefilterter Zeilen
Zeilenumbruch Leere Zeilen löschen
Spalten/Zeilen aus- und einblenden Zeilenumbruch in Formel erzwingen
Zeilen und Spalten über ein Drehfeld ein- und ausblenden Alle Kopf-/Fußzeilen-Festlegungen löschen
Fußzeilen beim Öffnen eintragen Zellinhalte zeilenweise sortieren