Forum: PC-Programmierung Zellen löschen nach dem Text in VBA


von Max (Gast)


Lesenswert?

Hallo,
ich komme momentan gar nicht so recht weiter. Möchte in VBA wenn in 
einer Zeile kein Text mit Failed erscheint löschen. Hab aus dem internet 
was gefunden.

For Zeile = 3 To 300
  If Application.CountA(Sheets("Tabelle1").Cells(Zeile, 8).Rows(Zeile)) 
<>   "Failed"  Then
    Sheets("Tabelle").Rows(Zeile).EntireRow.Delete
  else

  End If
Next

Hier macht er auch wenn ich keinen Failed text habe, die Zeile löschen.

Hoffe, dass mir jemand weiterhelfen kann.

Gruß
Max

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Max schrieb:
> Hier macht er auch wenn ich keinen Failed text habe, die Zeile löschen.

Genauer: "Er" (wer eigentlich?) löscht die Zeilen nur dann, wenn da 
nicht Failed steht.

Und so steht das ja auch da.

Sieh Dir mal die Vergleichsperatoren in VB an, was mag wohl "<>" sein?

von Max (Gast)


Lesenswert?

Hi Rufus,
sorry! Ja ich meinte natürlich auch wenn ich in der IF-Anweisung einen 
"=" setze, löscht das Programm keine Zeilen. VBA findet in diesem Fall 
den Text nicht.

Vielen Dank!

Gruß
Max

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nun, liefert denn Application.CountA() den Inhalt einer Zelle? Ich habe 
da so meine Zweifel.

von Rainer V. (rudi994)


Lesenswert?

O.g Code bringt bei mir Murks. Auch WorksheetFunction.CountA() ist nicht 
zweckmäßig. Und sollte das Suchwort, hier "Failed", in mehreren Zeilen 
direkt nacheinander vorkommen, dann wird die jeweils zweite Zeile nicht 
bearbeitet, da beim Löschen einer Zeile die nachfolgenden aufrücken und 
die aktuelle Zeilennummer schon abgearbeitet ist. Man muß also den 
Zähler zurücksetzen oder nach jedem Löschen die Schleife neu starten.

von ge-nka (Gast)


Lesenswert?

So sollte er Zeile löschen, wenn in Spalte 8 kein "Failed" steht,
For Zeile = 3 To 300
  If Sheets("Tabelle1").Cells(Zeile, 8).Value _
  <>  "Failed"  Then
    Sheets("Tabelle").Rows(Zeile).EntireRow.Delete
  else
  End If
Next

So sollte er Zeile löschen, wenn in Spalten 1 bis 100 kein "Failed" 
steht,

For i=1 to 100
 For Zeile = 3 To 300
   If Sheets("Tabelle1").Cells(Zeile, 8).Value _
   <>  "Failed"  Then
     Sheets("Tabelle").Rows(Zeile).EntireRow.Delete
   else
   End If
 Next
Next

von ge-nka (Gast)


Lesenswert?

paar Fehler bereinigt:

So sollte er Zeile löschen, wenn in Spalte 8 kein "Failed" steht,
For Zeile = 3 To 300
  If Sheets("Tabelle1").Cells(Zeile, 8).Value _
  <>  "Failed"  Then
    Sheets("Tabelle").Rows(Zeile).EntireRow.Delete
    Zeile=Zeile-1
  else
  End If
Next

So sollte er Zeile löschen, wenn in Spalten 1 bis 100 kein "Failed"
steht,

For i=1 to 100
 For Zeile = 3 To 300
   If Sheets("Tabelle1").Cells(Zeile, i).Value _
   <>  "Failed"  Then
     Sheets("Tabelle").Rows(Zeile).EntireRow.Delete
     Zeile=Zeile-1
   else
   End If
 Next
Next

von Max (Gast)


Lesenswert?

Hallo Zusammen,
danke jetzt tut es!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.