Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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?
Antworten Top
#2
Kann niemand etwas dazu sagen?
Antworten 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
Antworten 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.
Antworten 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)
Antworten Top
#6
.....
Antworten 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)
Antworten Top


Gehe zu:


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