Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1700to1704
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 Auto-Filter - Fehlermeldung

VBA Auto-Filter - Fehlermeldung
09.07.2019 11:48:58
Kevin
Hallo zusammen,
ich habe eine Frage bezgl. des Auto-Filters.
Ich nutze eine Excel immer als "Sammelplatz" um CSV-Dateien einzuspielen,
das Problem ist das der Name der CSV-Datei immer ein anderer ist.
Wie kann ich folgendes Makro so umschreiben, damit es generell das vorhandene Arbeitsblatt unabhängig vom Namen nach u.s. Kriterien filtert?

Sub Filtern()
' Filtern Makro
Columns("F:G").Select
Range("G1").Activate
Selection.Delete Shift:=xlToLeft
Columns("B:D").Select
Range("D1").Activate
Selection.Delete Shift:=xlToLeft
Range("A3").Select
Selection.AutoFilter
ActiveWorkbook.Worksheets("DB.csv").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("DB.csv").AutoFilter.Sort.SortFields.Add2 Key:= _
Range("A1:A4910"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption _
:=xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("DB.csv").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Angezeigt wird immer der "Laufzeitfehler 91 Objektvariable oder With-Blockvariable nicht festgelegt".
Habe nur begrenzte VBA-Kenntnisse...
Vielen Dank im Voraus für eure Hilfe!

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Auto-Filter - Fehlermeldung
09.07.2019 12:35:49
Regina
Moin,
Du könntest mit ActiveSheet arbeiten.
D.h.
neue Variable:
Dim str_blattname as String
str_blattname = Activesheet.Name
dann im Quellcode beim AutoFilter "DB.csv" komplett durch str_blattname (ohne Anführungszeichen!) ersetzen.
Das nächste Problem könnte sein, dass Deine Listen unterschiedlich lang sind, Dein Code arbeitet nur bis Zeile 910. Ist es gewährleistet, dass die Listen nicht länhgger sind?
Gruß
Regina
AW: VBA Auto-Filter - Fehlermeldung
09.07.2019 13:04:54
Kevin
Hi Regina,
danke für die schnelle Rückmeldung, habe es ausprobiert aber es funktioniert noch nicht.
Der Code sieht nun wie folgt aus. Vermutlich habe ich es falsch eingefügt:

Sub Filtern()
' Filtern Makro
Dim str_blattname As String
str_blattname = ActiveSheet.Name
Columns("F:G").Select
Range("G1").Activate
Selection.Delete Shift:=xlToLeft
Columns("B:D").Select
Range("D1").Activate
Selection.Delete Shift:=xlToLeft
Range("A3").Select
Selection.AutoFilter
ActiveWorkbook.Worksheets(str_blattname).AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets(str_blattname).AutoFilter.Sort.SortFields.Add2 Key:= _
Range("A1:A7000"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption _
:=xlSortTextAsNumbers
With ActiveWorkbook.Worksheets(str_blattname).AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Die Fehlermeldung kommt nach wie vor in folgender Zeile:
 ActiveWorkbook.Worksheets(str_blattname).AutoFilter.Sort.SortFields.Clear
Wie beschrieben, meine VBA-Kenntnisse halten sich in Grenzen...
Danke Dir im Voraus
Gruß
Kevin
Anzeige
AW: VBA Auto-Filter - Fehlermeldung
09.07.2019 13:11:58
Kevin
Hallo Uwe,
genau das ist es, VIELEN DANK!!
Auch nochmal danke an Regina!
Gruß
Kevin
Erklärung..
09.07.2019 13:49:45
UweD
Prima. Danke für die Rückmeldung.


Der Grund war sehr wahrscheinlich..
"Selection.AutoFilter" ...
schaltet den Filter je nach Zustand ein oder aus.
Wenn der Filter an war, wird hierdurch ausgeschaltet und dann
ist nichts da, was du mit ".AutoFilter.Sort.SortFields.Clear" löschen kannst.
LG UweD
AW: Erklärung..
09.07.2019 14:41:34
Kevin
Das ergibt Sinn, wieder was gelernt.
Danke Uwe!
Gruß
Kevin
AW: VBA Auto-Filter - Fehlermeldung
09.07.2019 12:56:16
UweD
Hallo
so?
Sub Filtern()
    Dim LR As Long
    With ActiveSheet
        LR = .Cells(.Rows.Count, "A").End(xlUp).Row 'letzte Zeile der Spalte 
        .Columns("F:G").Delete Shift:=xlToLeft
        .Columns("B:D").Delete Shift:=xlToLeft
        If .AutoFilterMode Then .AutoFilterMode = False
        .Range("A3").AutoFilter
        With .AutoFilter.Sort
            .SortFields.Add2 Key:=Range("A1:A" & LR), SortOn:=xlSortOnValues, _
                Order:=xlDescending, DataOption:=xlSortTextAsNumbers
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End With
End Sub
LG UweD
Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige