Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1824to1828
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

VBA Autofilter - Zeile Löschen

VBA Autofilter - Zeile Löschen
13.04.2021 08:07:45
Christoph
Hallo Zusammen,
mit Eurer Hilfe habe ich letztes Jahr ein Makro erstellt, mit dem in Einer Liste nach bestimmten Werten gesucht wird und die gefundenen Zeilen dann gelöscht werden. Hier das Beispiel-Ergebnis:

Sub ABC()
Dim lng_letzteZeile As Long
Dim Zelle As Range
Columns("AC:AC").Select
Application.Calculation = xlManual
ActiveSheet.Range("$A$1:$AH$6577").AutoFilter Field:=29, Criteria1:=""
For Each Zelle In ActiveCell.EntireColumn.SpecialCells(2)
Zelle.Value = CStr(Zelle.Text)
Next
Application.Calculation = xlAutomatic
Cells.Select
Range("B1").Activate
Selection.AutoFilter
With ActiveSheet
lng_letzteZeile = .Cells(Rows.Count, 1).End(xlUp).Row
Application.DisplayAlerts = False
'       #4711
'        .Range("$A$1:$AH$" & lng_letzteZeile).AutoFilter Field:=2, Criteria1:="4711"
'        .Rows(1).Hidden = True
'         If .Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row).SpecialCells(xlCellTypeVisible) _
_
.Count >= 1 Then
'            .Range("$A$1:$AH$" & lng_letzteZeile).SpecialCells(xlCellTypeVisible).Delete
'         End If
'         .Rows(1).Hidden = False
.AutoFilterMode = False
Application.DisplayAlerts = True
End With
Range("A1").Select
'    Selection.AutoFilter
'    ActiveWorkbook.SaveAs Filename:= _
"\*.xls" _
, FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
ChDrive "N:\"
ChDir "


Jetzt kommt es aber vor daß der gesuchte Wert in der Liste gar nicht vorkommt. Dann bricht das Makro, aus mir nicht verständlichen Gründen, ab. In dem Beispiel wird in der Spalte B nach einem Wert 4711 gesucht, der aber nicht vorhanden ist.Ich dachte das Problem mit der if-Abfrage Count>1 abgefangen zu haben. Das scheint aber nicht der Fall zu sein. Gibt es eine möglichkeit das mit einem, wie auch immer gearteten else abzufangen? Wenn Ja wie?
Danke schon mal im Voraus für Eure Hilfe
MfG
Christoph

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Autofilter - Zeile Löschen
13.04.2021 08:13:03
ralf_b
specialcells wirft einen Fehler wenn keine Daten gefunden werden.
das löst man z.b. mit einer on error resume next anweisung
AW: VBA Autofilter - Zeile Löschen
13.04.2021 08:34:47
Christoph
Danke. Konnte es einbauen. :)
AW: VBA Autofilter - Zeile Löschen
13.04.2021 08:49:40
Werner
Hallo,
On Error... ist meiner Meinung nach die Holzhammer-Methode.
Du kannst doch vor deinem Filtervorgang prüfen, ob der "Filterbegriff" in der Spalte überhaupt vorhanden ist.
  • 
    Sub ABC()
    Dim lng_letzteZeile As Long, Zelle As Range
    Application.Calculation = xlManual
    Application.ScreenUpdating = False
    'Blattname anpassen
    With Worksheets("DeinBlattname")
    lng_letzteZeile = .Cells(Rows.Count, "A").End(xlUp).Row
    .Range("$A$1:$AH$" & lng_letzteZeile).AutoFilter Field:=29, Criteria1:=""
    For Each Zelle In .Range("AC1:AC" & lng_letzteZeile).SpecialCells(2)
    Zelle.Value = CStr(Zelle.Text)
    Next
    Application.Calculation = xlAutomatic
    Range("B1").AutoFilter
    If WorksheetFunction.CountIf(.Columns("B"), 4711) > 0 Then
    .Range("$A$1:$AH$" & lng_letzteZeile).AutoFilter Field:=2, Criteria1:="4711"
    .Rows(1).Hidden = True
    .Range("$A$1:$AH$" & lng_letzteZeile).SpecialCells(xlCellTypeVisible).Delete
    End If
    .Rows(1).Hidden = False
    .Range("A1").AutoFilter
    End With
    End With
    Application.DisplayAlerts = False
    ThisWorkbook.SaveAs Filename:="\*.xls", FileFormat:=xlExcel8, Password:="" _
    , WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
    ChDrive "N:\"
    ChDir ""
    End Sub
    

  • Bemerkung: Ich bin mal davon ausgegangen, dass die ganze Aktion in dem Workbook durchgeführt werden soll, in dem sich auch der Code befindet.
    ThisWorkbook.SaveAs Filename:="\*.xls" ---- ohne Name ?
    Gruß Werner
    Anzeige

    323 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige