VBA Filter auf Tabelle
#1
Hallo zusammen,

ich habe eine Datei mit VBA vor mir (die ich nicht selbst erstellt habe). 


Code:
    Sub Name()
    Dim arrCodes As Variant
    Dim arrSSU As Variant
    Dim k As Variant
    Dim strFileName As String
    Dim strPath As String
    Dim strWorksheet_Blatt123 As String
    Dim strMasterFileName As String
   
 
    ' Variablen --> Müssen vor Ausführung des Makros angepasst bzw. überprüft werden
    strPath = "C:\Pfadname123\" 'Ordnerpfad wohin die Dateien gespeichert werden sollen
    strWorksheet_Blatt123 = "Blatt123"
    strMasterFileName = "Dateiname.xlsm"
   
    ' Dictionary
    Set dictCodes = CreateObject("scripting.dictionary")

    dictCodes("123") = "ABC"
     dictCodes("456") = "DEF"  


            Sheets(strWorksheet_Blatt123).Select
            ActiveSheet.Range("$A$11:$BA$50000").AutoFilter Field:=2, Criteria1:="<>" & dictCodes(k), Operator:=xlFilterValues
            Rows("12:12").Select
            Range(Selection, Selection.End(xlDown)).Select
            Selection.Delete Shift:=xlUp
            ActiveSheet.Range("$A$11:$BA$5000").AutoFilter Field:=2


Ziel dieser Datei ist es in der bestehenden Datei im Blatt "Blatt123" in einer Tabelle einen Filter zu setzen und die gefilterte Tabelle als neue Datei abzuspeichern. 


Das Abspeichern der neuen Datei funktioniert auch - allerdings ist entweder keine Filterung vorgenommen und es sind alle Daten zu sehen oder es sind überhaupt keine Daten zu sehen. 

Kann mir jemand erklären wo die "Stellschrauben" sind? Bzw. wonach er ganz genau filtert?

Ich verstehe das so, dass er im Cluster A11:BA50000 in der 2. Zelle von Links versucht zu filtern was nicht dictCode(k) also "ABC" entspricht.
Ist das so halbwegs richtig?
Top
#2
Kann niemand etwas dazu sagen?
Top
#3
Hallöchen,

Zitat:dictCodes(k)

wo kommt k her und wie ist der Inhalt?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • DieMarie
Top
#4
Hallo, 

folgendermaßen sieht das Ganze aus:

   


Ziel ist es diese Tabelle über das VBA zu filtern und mit dem Filter als neue Datei zu speichern. 


Code:
Sub Copy_paste()
    Dim arrCodes As Variant
    Dim arrSSU As Variant
    Dim k As Variant
    Dim strFileName As String
    Dim strPath As String
    Dim strWorksheet_Beispiel As String
    Dim strMasterFileName As String

   
    ' Variablen --> Müssen vor Ausführung des Makros angepasst bzw. überprüft werden
    strPath = "C:\Users\Beispieluser\Desktop\Ordnername\" 'Ordnerpfad wohin die Dateien gespeichert werden sollen
    strWorksheet_Beispiel = "Beispiel"
    strMasterFileName = "DateinameDerStartdateiMitDaten.xlsm"
   
    ' Dictionary
    Set dictCodes = CreateObject("scripting.dictionary")
    dictCodes("A130") = "ABC"
    dictCodes("A220") = "DEF"

    For Each k In dictCodes.Keys
        If k = "A130" Then
            'Arbeitsmappe speichern als Kopie
            ActiveWorkbook.SaveCopyAs Filename:=strPath & "DateinameA130.xlsm"
            Workbooks.Open strPath & "DateinameA130.xlsm"
            Workbooks("DateinameA130.xlsm").Activate
                     
'            Filtern der Daten in Arbeitsblatt
            Sheets(strWorksheet_Source).Select
            'ActiveSheet.Range("$A$11:$I$50000").AutoFilter Field:=9, Criteria1:="<>" & dictCodes(k), Operator:=xlFilterValues
            Rows("12:12").Select
            Range(Selection, Selection.End(xlDown)).Select
            Selection.Delete Shift:=xlUp
            ActiveSheet.Range("$A$11:$I$11").AutoFilter Field:=2

            'Speichern und schließen der Datei
            Workbooks("DateinameA130.xlsm").Save
            Workbooks("DateinameA130.xlsm").Close
            Workbooks(strMasterFileName).Activate               
     
        End If
    Next k
               
End Sub


Der Code kopiert auch die Datei und speichert sie unter gewünschtem Namen. 

Allerdings hat er nur in Zeile 11 die Überschriften / Filter --> und darunter ist alles leer. 

Eigentlich sollte in B11 auf A130 also "ABC" gefiltert werden. 
Macht er aber nicht.
Top
#5
Hallöchen,

vermutlich ist das
Code:
Rows("12:12").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
die Ursache für das
Zitat:Allerdings hat er nur in Zeile 11 die Überschriften / Filter --> und darunter ist alles leer.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#6
.....
Top
#7
@StrammerMax, woher kennt DieMarie Dich und Deine Aufgaben?

Ansonsten, nochmal

Zitat:
Code:
Rows("12:12").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp

Arbeite den Code schrittweise ab und schaue, was bei Ausführung der 3 Zeilen passiert.
Oder übersetze die 3 Zeilen ins deutsche...


Alternativ:

Nimm ein leeres Blatt
Schreibe in Zeile 11 die Überschriften
Filtere anschließend.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste