Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1164to1168
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
gefilterte löschen
walter
Hallo,
ich möchte die gefilterten löschen, so filter ich die zu löschende Zeilen.
Es soll die Zeile dann von der Spalte B bis AY gelöscht werden.
Selection.AutoFilter Field:=27, Criteria1:="=w*", Operator:=xlAnd
Range("B3").Select
mfg walter
Gefilterte löschen
26.06.2010 18:01:25
Erich
Hi Walter,
was genau meinst du mit "gelöscht"? Delete, Clear oder ClearContents?
Hier mal alle drei:

Option Explicit
Sub FiltDel()
Dim lngL As Long, rngDel As Range
Selection.AutoFilter Field:=27, Criteria1:="=w*", Operator:=xlAnd
lngL = Cells(Rows.Count, 27).End(xlUp).Row
Set rngDel = ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible)
If Not rngDel Is Nothing Then
rngDel = Intersect(rngDel, Range(Cells(2, "B"), Cells(lngL, "AY")))
If Not rngDel Is Nothing Then
MsgBox rngDel.Address  ' nur zum Testen
rngDel.ClearContents             ' oder Clear ?
' oder
rngDel.Delete xlShiftToLeft      ' oder xlShiftUp ?
End If
End If
End Sub
Beim Delete hast du noch die Qual der Wahl, ob die rechts angrenzenden Zellen nach links
oder die darunter liegenden nach obewn rutschen sollen.
Alles klar?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort und: Schönes sonniges Wochenende!
Anzeige
böser Fehler - noch einmal
26.06.2010 18:11:12
Erich
Hi Walter,
sorry, hoffentlich hast du noch nicht getestet...
Ich habe ein ganz wesentliches "Set" vergessen. Hier der Code korrigiert:

Option Explicit
Sub FiltDel()
Dim lngL As Long, rngDel As Range
Selection.AutoFilter Field:=27, Criteria1:="=w*", Operator:=xlAnd
lngL = Cells(Rows.Count, 27).End(xlUp).Row
Set rngDel = ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible)
If Not rngDel Is Nothing Then
Set rngDel = Intersect(rngDel, Range(Cells(2, "B"), Cells(lngL, "AY")))
If Not rngDel Is Nothing Then
'MsgBox rngDel.Address  ' nur zum Testen
'         rngDel.ClearContents             ' oder Clear ?
' oder
rngDel.Delete xlShiftToLeft      ' oder xlShiftUp ?
End If
End If
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
Leider Fehlermeldung
27.06.2010 19:08:36
walter
Hallo Erich,
erst mal Danke für die Hilfe.
Es kommt eine Fehlermeldung:
Laufzeitfehler 1004
Die Delete-Methode des Range-Objektes konnte nicht ausgeführt werden.
Übrings, ich möchte die kompl. Zeile rauslöschen.
mfg walter
Habe Fehler gefunden jetzt noch
27.06.2010 21:22:32
walter
Guten Abend Erich,
so läuft es.
Wenn ich das Makro nochmal starte, wird die Überschriftszeile Nr.3 gelöscht.
Public Sub Test_löschen()
Dim lngL As Long, rngDel As Range
Selection.AutoFilter Field:=27, Criteria1:="=w*", Operator:=xlAnd
lngL = Cells(Rows.Count, 1).End(xlUp).Row
Set rngDel = ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible)
If Not rngDel Is Nothing Then
Set rngDel = Intersect(rngDel, Range(Cells(4, "B"), Cells(lngL, "AY")))
If Not rngDel Is Nothing Then
'MsgBox rngDel.Address  ' nur zum Testen
'    rngDel.ClearContents             ' oder Clear ?
' oder
'  rngDel.Delete xlShiftToLeft      ' oder xlShiftUp ?
rngDel.Delete Shift:=xlUp
End If
End If
End Sub
mfg walter
Anzeige
Verständnisprobleme
28.06.2010 09:29:41
Erich
Hi Walter,
so ganz blicke ich da nicht durch.
"wird die Überschriftszeile Nr.3 gelöscht":
Hätte ich ahnen können, wie viele Ueb-Zeilen deine Tabelle hat?
Im Moment ahne ich, dass es genau drei sind. Ahne ich richtig?
"Übrings, ich möchte die kompl. Zeile rauslöschen."
In deiner Frage hattest du geschrieben: "Es soll die Zeile dann von der Spalte B bis AY gelöscht werden."
Hat sich das geändert?
In deinem neuesten Code - zu dem du schreibst: "so läuft es", werden NICHT die ganzen Zeilen gelöscht.
Also jetzt doch komplette Zeilen löschen?
Wie wäre es mit ein paar mehr Infos?
Nach welcher Tabellenspalte wird gefiltert? Stimmt es, dass in Spalte AA auf "w*" geprüft werden soll?
Warum bestimmst du mit der Zeile
lngL = Cells(Rows.Count, 1).End(xlUp).Row
die Zeilenzahl in Spalte 1=A? Ich hatte lngL aus Spalte 27=AA bestimmt.
Unterhalb der letzten Zeile in Spalte AA kann doch kein "w*" mehr kommen...
Hier mal zwei Varianten zum Testen:

Sub Test_löschen2()
Dim lngL As Long, rngDel As Range
Selection.AutoFilter Field:=27, Criteria1:="=w*", Operator:=xlAnd
lngL = Cells(Rows.Count, 27).End(xlUp).Row
If lngL 
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
So geht doch... --))
28.06.2010 12:44:48
Walter
Hallo Erich,
die Version klappt,
Sub Test_löschen2()
DANKE !
Danke für deine Rückmeldung, über ...
28.06.2010 12:53:03
Erich
Hi Walter,
... die ich mich mehr gefreut hätte, wann du auch meine Fragen beantwortet hättest.
Gibst du nicht gerne Antworten?
Grüße von Erich aus Kamp-Lintfort
Sorry Erich, selbstverständlich...
28.06.2010 13:38:19
Walter
Hallo Erich,
Du hast recht, hatte mich jetzt nur gefreut das es klappt.
Ich habe als Länge die Spalte A genommen.
Ich wollte immer das die Zeile dann von B:AY kompl. gelöscht wird.
Klappt mit dem Makro jetzt, einwandfrei !!!
Nochmals tausend Dank.
Darf ich mal eben eine Zusatzfrage stellen ?Ich möchte damit die ausgeählten Spaltenbreite einstellen:
Range("AH:AH,AU:AU").ColumnWidth = 15
leider bricht ab, wenn ich dann ins Makro gehe und
F5 drücke geht es aber weiter ! Wieso ?
mfg walter
Anzeige
Rückfragen
28.06.2010 17:54:39
Erich
Hi Walter,
Was meinst du mit "leider bricht ab"? Gibt es eine Fehlermeldung?
Wenn ja, welche Fehlermeldung, welche Fehlernummer? Wirklich in der Codezeile
Range("AH:AH,AU:AU").ColumnWidth = 15 ?
Diese Zeile läuft bei mir problemlos durch und verbreitert die Spalten AH und AU.
Ist vielleicht ein Blattschutz aktiv? Oder hast du einen Haltepunkt gesetzt?
Hast du eigentlich den anderen Codevorschlag - Makro FiltDel2() - mal ausprobiert?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Rückfragen
28.06.2010 18:31:30
walter
Hallo Erich,
das Makro wird nicht ausgeführt und ich habe dimm zz eingesetzt.
Das Spaltenverändern geht jetzt, weiß auch nicht warum,
mfg walter
Anzeige
Danke und sorry!
28.06.2010 19:22:00
Erich
Hi Walter,
oh, da fehlte "Dim zz as Long"
Du hast es richtig ergänzt. Danke, sorry für den Fehler, ich wünsche dir eine schöne Woche!
Grüße von Erich aus Kamp-Lintfort
Hallo Erich, Makro läuft nicht
28.06.2010 20:55:47
walter
Hallo Erich,
leider keine Reaktion, das MAkro läuft nicht.
ES wird also nichts gelöscht !
mfg walter
Makro läuft nicht?
28.06.2010 21:30:37
Erich
Hi Walter,
wenn das Makro nicht läuft, kann ja auch nichts gelöscht werden.
Woran merkst du, dass das Makro nicht läuft? Was passiert denn dann, wenn du es aufrufst?
Arbeitsverweigerung im Stillen? ;-))
Ich vermute, dass das Makro schon läuft. Aber das Ergebnis ist bei dir nicht so, wie du das erwartest.
Vielleicht liegt es an den Daten? Vielleicht wird kein "w*" gefunden?
Nachdem du das nicht getan hast, lade ich mal ein Beispiel zum Ausprobieren hoch:
https://www.herber.de/bbs/user/70314.xls
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
So das schaue ich mir... --))
28.06.2010 22:21:12
walter
Guten Abend Erich,
bei mir keine Reaktion hatte das MAkro auch mit f%
GESTARTET.
Dein Beispiel klappt. Werde es noch kontr. und bei mir umsetzen,
bin Morgen in Hamburg.
Tausend Dank für deine Geduld !!!
Schönen Abend noch,
mfg walter
Hier dein Muster mit meinen Daten
28.06.2010 22:41:21
walter
Hallo Erich,
ich kponnte es nicht lassen, hier dein Muster mit meinen Daten.
Spalte bis 51 muß gelöscht werden.
https://www.herber.de/bbs/user/70316.xls
so jetzt aber für Heute schluss...
mfg walter
Kleine und große Buchstaben
29.06.2010 08:18:21
Erich
Hi Walter,
warum lässt du nach kleinen "w"s suchen, wenn du die Zeilen mit den großen "W"s löschen willst?
Zwei Möglichkeiten:
Const strS As String = "W" ' Suchtext (mit einem großen W)
oder du schreibst oben im Modul (unter Option Explicit)
Option Compare Text
Dann unterscheidet Like nicht zwischen groß und klein.
(Das steht in der VBA-Hilfe zu Like...)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Kleine und große Buchstaben
29.06.2010 20:03:08
walter
Guten Abend Erich,
nochmals Danke für die Hilfe.
Habe dies eingesetzt: Option Compare Text
einwandfrei !!!
Schönen Abend noch,
mfg walter
AW: Gefilterten Bereich löschen
27.06.2010 21:42:35
Gerd
Hallo Walter,
mit deinem konkreten Filterbereich wäre es ggf. einfacher.
Nach dem Filtern weiter mit
Sub test()
Dim rngA As Range, rngB As Range
With ActiveSheet
Set rngA = .AutoFilter.Range.Offset(1).Resize(.AutoFilter.Range.Rows.Count - 1).EntireRow
Set rngB = .Cells.SpecialCells(xlCellTypeVisible)
If Not Intersect(rngA, rngB) Is Nothing Then
Intersect(rngA, rngB).Delete 'komplette Zeilen löschen
'oder
'Intersect(rngA, rngB, .Columns("B:AY")).Delete shift:=xlShiftUp  'Zeilenbereiche löschen
End If
End With
End Sub
Gruß Gerd
Anzeige
Hallo Gerd, DANKE -)
28.06.2010 12:46:11
Walter
Hallo Gerd,
danke für den Hinweis.
mfg walter
AW: Hallo Walter,
28.06.2010 21:32:47
Gerd
bitteschön.
Da war auch eine Scheibe Code dabei. Aber tue dir keinen Zwang an. :-)
Gruß Gerd
Hallo Gerd habe ich verstanden --)
28.06.2010 22:13:58
walter
Guten Abend Gerd,
das habe ich schon gemerkt u. verstanden, bin leider nicht
so schnell...
Schönen Abend noch u. nochmals
Danke,
mfg walter

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige