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

Beiträge aus den Excel-Beispielen zum Thema "Makro zum Zeilen löschen"