Office: VBA Komplette Zeilen löschen mit Autofilter mit Makro

Helfe beim Thema VBA Komplette Zeilen löschen mit Autofilter mit Makro in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo, ich möchte einen Autofilter in der ersten Zeile anweden, dann in der 12 Spalte nach "B" filtern und anschließend die gefundenen Zeilen... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Marius82, 17. Juli 2012.

  1. Marius82 Erfahrener User

    VBA Komplette Zeilen löschen mit Autofilter mit Makro


    Hallo,

    ich möchte einen Autofilter in der ersten Zeile anweden, dann in der 12 Spalte nach "B" filtern und anschließend die gefundenen Zeilen entfernen. Bei meinem Versuch löscht mir der Code leider auch die Zeile mit in der ich filtere- das soll so nicht sein ;)

    Hier mein Versuch:

    Code:
    With Sheets("Ka")
            Rows("1:1").AutoFilter Field:=12, Criteria1:="B"
            .UsedRange.SpecialCells(xlCellTypeVisible).delete
    End With
    
    Ich benutze Excel 2010
    Danke!
     
    Marius82, 17. Juli 2012
    #1
  2. Beverly
    Beverly Erfahrener User
    Hi Marius,

    müsste nicht vor Rows noch ein Punkt (.), damit sich der Autofilter auf das Tabellenblatt "Ka" bezieht? Ich nehme mal an, dass der Autofilter in diesem Blatt gar nicht gesetzt wird, da du dich durch den fehlenden Punkt mit deinem Code auf das aktive Tabellenblatt beziehst.

    Bis später,
    Karin
     
    Beverly, 17. Juli 2012
    #2
  3. Marius82 Erfahrener User
    Hey Beverly bzw Karin!

    Hmmm, bei mir funktioniert der Autofilter mit Punkt (.) und auch ohne den Punkt. Vielleicht weil nur das eine Tabellenblatt vorhanden ist? Was soll dieser Punkt eigentlich? Das hat irgendwas mit der with- Anweisung auf sich?


    Danke
     
    Marius82, 17. Juli 2012
    #3
  4. fette Elfe Erfahrener User

    VBA Komplette Zeilen löschen mit Autofilter mit Makro

    Edit sagt:

    Mir ist gerade was eingefallen, und habs getestet:
    "Offset" ist nicht unbedingt schlau in dem Zusammenhang.
    Wenn die "UsedRange" bis runter zur allerletzten Zeile geht (z.bsp. weil in einer kompletten Spalte die Hintergrundfarbe geändert wurde), dann kann der Bereich natürlich nicht um eine Zeile nach unten verschoben werden, und das Makro läuft mit Volldampf vor die Wand.
    Etwas länger, aber dafür ungefährlich wäre z.Bsp. diese Variante:
    Code:
    .Range(.Rows(2), .Rows(.UsedRange.Rows(.UsedRange.Rows.Count).Row)).SpecialCells(xlCellTypeVisible).EntireRow.Delete


    Hallo Marius,

    um zu vermeiden, dass die erste Zeile mitgelöscht wird, könnte man den Bereich mit "Offset" um eine Zeile nach unten schieben:
    Code:
    With Sheets("Ka")
        [COLOR=#ff0000].[/COLOR]Rows("1:1").AutoFilter Field:=12, Criteria1:="B"
        .UsedRange[COLOR=#ff0000].Offset(1, 0)[/COLOR].SpecialCells(xlCellTypeVisible)[COLOR=#ff0000].EntireRow[/COLOR].Delete
        [COLOR=#ff0000].ShowAllData[/COLOR]
    End With
    Das "EntireRow" bewirkt, dass direkt die ganze Zeile gelöscht wird, damit die Nachfrage von Excel nicht immer erscheint, und mit "ShowAllData" werden wieder alle Zeilen angezeigt, der Autofilter bleibt aber bestehen.
    Um ihn wieder ganz zu löschen müsste ".AutoFilterMode = False" eingebaut werden.

    Der "." vor dem "Rows" ist Teil der Referenzierung.
    Innerhalb "With" und "End With" bezieht sich alles wo ein "." vorweg gestellt wird, auf das benannte Objekt, in diesem Fall ein Blatt (vereinfacht gesagt).

    Übrigens, falls Dein Code sich im CodeModul des Blattes und nicht in einem allgemeinen Modul befindet kannst Du, anstatt "With Sheets("Ka")" auch "With Me" benutzen.
    Und generell würde ich empfehlen anstatt "Sheets" lieber "Worksheets" zu benutzen, denn sollte das vom Code aufgerufene Blatt mal kein Tabellenblatt sein (es gibt noch andere) dann würden die meisten Makros hängen bleiben.



    Ich hoffe geholfen zu haben.
     
    Zuletzt bearbeitet: 17. Juli 2012
    fette Elfe, 17. Juli 2012
    #4
  5. Marius82 Erfahrener User
    So gehts, danke! Und besten Dank für die ausführliche Erklärung!
     
    Marius82, 18. Juli 2012
    #5
  6. Marius82 Erfahrener User
    Ich bin es nochmal,
    wenn der Autofilter nichts findet, weil kein "B" in der Spalte vorhanden ist, kommt: "Laufzeitfehler 1004. Keine Zellen gefunden"

    Wie kann man die Fehlermeldung am besten umgehen? Es kann nämlich durchaus vorkommen das kein "B" in der Spalte vorhanden ist. Mit On ERROR GOTO? Oder so?

    Danke
     
    Marius82, 18. Juli 2012
    #6
  7. Beverly
    Beverly Erfahrener User
    Hi Marius,

    füge vor dem Setzen des Autofilters noch eine Prüfung ein, ob Spalte 12 "B" enthält:

    Code:
       If Application.CountIf(Columns(12), "B") > 0 Then
    
           '......
    
       End If
    
    Bis später,
    Karin
     
    Beverly, 18. Juli 2012
    #7
  8. Marius82 Erfahrener User

    VBA Komplette Zeilen löschen mit Autofilter mit Makro

    Danke!!
     
    Marius82, 18. Juli 2012
    #8
Thema:

VBA Komplette Zeilen löschen mit Autofilter mit Makro

Die Seite wird geladen...
  1. VBA Komplette Zeilen löschen mit Autofilter mit Makro - Similar Threads - VBA Komplette Zeilen

  2. Datei in mehreren Ordnern suchen und wenn gefunden öffnen?! Macro / VBA

    in Microsoft Excel Hilfe
    Datei in mehreren Ordnern suchen und wenn gefunden öffnen?! Macro / VBA: Hallo Leute, Hoffentlich könnt ihr mir hier helfen, ich krieg den Syntax einfach nicht hin (wahrscheinlich ist es auch totaler käse den ich programmiert habe). Also im Grunde soll eine Datei...
  3. Textteile aus Zelle mit mehreren Absätzen

    in Microsoft Excel Hilfe
    Textteile aus Zelle mit mehreren Absätzen: Hallo, ich habe folgendes Problem: Ich habe in einer Liste in einer Zelle mehrere Angaben aus denen ich Textteile (z.B. alles was in () oder {} ist) herausziehen will, um damit weiter zurechnen....
  4. Aufrufen Datei aus SharePoint per VBA

    in Microsoft Access Hilfe
    Aufrufen Datei aus SharePoint per VBA: Wer kann mir helfen. In meiner Firma gibt es Dateien in diversen Ordner in Form von SharePoints, worauf alle Kolleginnen und Kollegen zugreifen kann. Dort habe ich eine Excel-Vorlage, worin die...
  5. VBA: Spalten auf anderen Worksheeds in der Mappe ausblenden.

    in Microsoft Excel Hilfe
    VBA: Spalten auf anderen Worksheeds in der Mappe ausblenden.: Hallo zusammen, Eine Tabelle mit 9 Worksheets, Datenblatt, Studien, Studie_1 ...Studie_7. Auf dem Deckblatt werden in Zelle B4-B10 die Namen der Studien eingetragen. Davon abhängig ob ein Name...
  6. VBA Zeilen kopieren mit Bedingung

    in Microsoft Excel Hilfe
    VBA Zeilen kopieren mit Bedingung: Hallo zusammen, Ich möchte per Makro Zeilen aus Tabelle2 in Tabelle3 kopieren, wenn eine Bedingung erfüllt ist. Bedingung: Der Wert in Spalte E (Tabelle2) kommt in Tabelle1 in Spalte E vor....
  7. VBA - Datensätze ans Ende einer anderen Tabelle kopieren

    in Microsoft Excel Hilfe
    VBA - Datensätze ans Ende einer anderen Tabelle kopieren: Hallo zusammen, ich habe gerade eine "Abrechnungs"-Datei für einen Kindergartenbasar erstellt. Es wäre klasse, wenn man per Schaltfläche die Datensätze aus der Tabelle "Kaeufer" ans Ende der...
  8. Excel per VBA komplett beenden

    in Microsoft Excel Hilfe
    Excel per VBA komplett beenden: Habe eine Frage und bis dato noch nicht die richtige Antwort gefunden. Ich möchte per vba-code die Anwendung Excel komplett beenden, d.h. es soll nicht nur das Workbook sondern die Anwendung als...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden