Anzeige
Archiv - Navigation
1200to1204
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

Zeilen löschen nach Auswahl

Zeilen löschen nach Auswahl
heidi
Hallo Ihr VBA-Profis,
ich komme hier nicht weiter. Habe versucht ein Sub, die ich hier im Archiv gefunden habe,
auf meine Bedürfnisse abzuändern, klappt aber nicht.
Ich möchte alle Zeilen löschen (und zwar ganz löschen), die in Spalte 9
den Wert "Inaktiv" haben. Beim Start des Makros werden jetzt jedoch alle Zeilen gelöscht und ich
bekomme den Fehler "Objekt erforderlich" bei Set rng = Inaktiv
Wie muss ich das Ändern?
Danke für Eure Hilfe und Grüße,
Heidi
Sub Deb_Passiv_inaktive_Kunden_löschen()
Dim rng As Range
On Error Resume Next
Set rng = Columns(9).SpecialCells(xlCellTypeConstants).EntireRow
If Not rng Is Inaktiv Then rng.Delete
On Error GoTo 0
Set rng = Inaktiv
End Sub

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Inaktiv ist doch ein Wert! So wie du das...
17.02.2011 14:48:20
Luc:-?
…schreibst, Heidi,
ist's 'ne Variable! Außerdem steht das ja in Zellen, nicht über eine ganze Zeile, die von rng repräsentiert wird. Du musst den mögl Standortbereich Zelle für Zelle in 1er sog Schleife durchgehen oder die (Bereichs-)Methode Find verwenden (genügend Bspp im Archiv!) und die Zeile des Ergebnisses löschen.
Gruß Luc :-?
AW: Inaktiv ist doch ein Wert! So wie du das...
17.02.2011 15:30:15
heidi
Hallo Luc,
ich such mir hier den Wolf ;-(
Es gibt so viele verschiedene Varianten zum Löschen von Zeilen, doch keine Einzige scheint für mein einfaches Problem zu passen. Mit selber Programmieren ist das so eine Sache.
Und mit dem Makro-Rekorder bekomme ich über die Methode Filter setzen und dann alle mit Wert "Inaktiv" in Spalte 9 löschen einen Fehler: Überlauf.
Die Tabelle hat ca. 63.000 Zeilen und 95 Spalten.
Bis bald hoffentlich!
Grüße, Heidi
Anzeige
Mal sehen...
17.02.2011 17:56:02
Luc:-?

Sub Deb_Passiv_inaktive_Kunden_löschen()
Dim rng As Range
On Error Resume Next
With ActiveSheet.UsedRange.Columns(9)    '.SpecialCells(xlCellTypeConstants)
Set rng = .Find(What:="Inaktiv", LookIn:=xlValues, LookAt:=xlWhole)
While Not rng Is Nothing
rng.EntireRow.Select    '.Delete
.FindNext
Wend
End With
End Sub
So, Heidi,
da ich das mal eben so geschrieben habe und du das testen sollst/musst ohne Schaden anzurichten, habe ich erstmal Select geschrieben. Das kannst du ersetzen, wenn's fktt. Die 1.Auskommentierung dürfte dann auch entfallen, denn damit konnte ich hierbei nichts anfangen → gehört eher zu Copy&Paste.
Gruß Luc :-?
Anzeige
AW: Zeilen löschen nach Auswahl
17.02.2011 17:36:59
Rudi
Hallo,
Sub Deb_Passiv_inaktive_Kunden_löschen()
Dim rng As Range, rngC As Range, rngDel As Range
Set rng = Columns(9).SpecialCells(xlCellTypeConstants)
For Each rngC In rng
If rngC = "Inaktiv" Then
If rngDel Is Nothing Then
Set rngDel = rngC
Else
Set rngDel = Union(rngDel, rngC)
End If
End If
Next
If Not rngDel Is Nothing Then rngDel.EntireRow.Delete
End Sub

Gruß
Rudi
AW: Funktioniert leider noch nicht
18.02.2011 11:01:33
heidi
Hallo Luc und Rudi,
sorry, aber es funktioniert immer noch nicht.
Bei dem Sub von Luc markiert es die erste Zeile (in meinem Sheet die 8), der Bildschirm flackert ganz wild, doch auch nach fünf Minuten warten wird die zweite zu löschende Zeile (Zeile 15) noch nicht mal markiert.
Beim Abbruch über Esc wurde die Zeile Wend gelb markiert.
Bei dem Sub von Rudi bekomme ich die Fehlermeldung: Laufzeitfehler 1004: Del-Methode kann nicht angewendet werden. Beim Debuggen ist folgende Zeile gelb markiert:
If Not rngDel Is Nothing Then rngDel.EntireRow.Delete
Ich habe auch in anderen Beiträgen gelesen, dass es wichtig wäre, die betreffenden Zeilen von unten nach oben zu löschen. Kann es vielleicht daran liegen?
Danke Euch für die Unterstützung, Grüße,
Heidi
Anzeige
AW: Zeilen löschen nach Auswahl
18.02.2011 12:56:44
heidi
Hallo zusammen,
sorry, hier bin ich nochmal.
Alles, was ich da versuche, funktioniert leider nicht.
Bitte um weitere Hilfe für folgende Aufgabenstellung:
Ich möchte in einem Sheet mit ca. 64.000 Zeilen und 95 Spalten alle Zeilen löschen,
die in der Spalte 9 (Überschrift Deb_Passiv) den Wert "Inaktiv" besitzen.
Das sind ca. 7.000 Zeilen. Wie kann ich das (perfekt wäre natürlich bei möglichst kurzer Makrolaufzeit) lösen?
Danke im Voraus und Grüße,
Heidi
AW: Zeilen löschen nach Auswahl
18.02.2011 14:54:28
Rudi
Hallo,
was funktioniert denn beimeinem Code nicht?
Kommt 'Inaktiv' evtl. durch eine Formel zustande?
Sub Deb_Passiv_inaktive_Kunden_löschen()
Dim rng As Range, rngC As Range, rngDel As Range
Set rng = Range(Cells(2, 9), Cells(Rows.Count, 9).End(xlUp))
For Each rngC In rng
If rngC = "Inaktiv" Then
If rngDel Is Nothing Then
Set rngDel = rngC
Else
Set rngDel = Union(rngDel, rngC)
End If
End If
Next
If Not rngDel Is Nothing Then rngDel.EntireRow.Delete
End Sub

Gruß
Rudi
Anzeige
AW: Zeilen löschen nach Auswahl
21.02.2011 22:56:30
heidi
Hallo Rudi,
danke für Deine nochmalige Bemühungen. Ich konnte es jetzt, zumindest so halbwegs lösen mit:
Application.StatusBar = "Jetzt werden die Datensätze für inaktive Kunden und Interessenten gelöscht. Das kann ebenfalls dauern ..."
Dim i As Long ' Zeilenzähler
Dim tofind As Variant ' Hiernach wird gesucht
Dim found As Range ' Eine Fundstelle oder Nothing
tofind = "Inaktiv"
If tofind = "" Then Exit Sub
Application.ScreenUpdating = False
For i = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
Set found = Rows(i).Find(what:=tofind, LookIn:=xlValues, lookat:=xlWhole)
If Not found Is Nothing Then Rows(i).Delete
Next
Application.ScreenUpdating = False
Das habe ich gefunden, als ich vom Herber-Forum aus einen Link zu einem VBA-Kurs (versehentlich) angeklickt habe.
Das klappt, jedoch kann ich nicht die Spalte auswählen, in der gesucht werden soll. Das heißt, jetzt werden eben pauschal alle Zeilen mit einem Wert "inaktiv" gelöscht. Eigentlich wollte ich aber, dass nur die Werte aus der Spalte "Debitor" durchsucht werden und in der Spalte "Interessenten" die Werte stehen bleiben. Fürs Erste ist es jedoch o.k., nochmals vielen Dank für die Unterstützung.
Mit viel Geduld wirds schon langsam besser ...
Das Gute ist, dass bei uns (ca. 300 Mitarbeiter) alle Anderen noch weniger Ahnung haben :-)
VlG Heidi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige