Hallo,
ich nutze in meinem VBA-Quelltext einen Autofilter, welcher nach einer Datumsvariable filtert. Hierfür ruft der Filter eine Datei auf, um diese dann zu filtern. Der Dateiname ist in einer Array-Umgebung definiert. Da die gleiche Operation mehrere Male mit verschiedenen Dateien durchgeführt werden soll, ist der gesamte Vorgang in eine For-Next Schleife eingebunden. Bei jedem Durchlauf ändert sich die Array-Variable „DatNam“ und nimmt den Wert des jeweils nächsten Dateinamens an. Das funktioniert soweit alles prima.
Aber:
Die Arrayumgebung, die bei jedem Schleifendurchlauf den Dateinamen definiert über die Va-riable DatNam(a), umfasst ca 21 Elemente. Aber aus irgendeinem Grund meldet das Pro-gramm beim Durchlaufen bei 11 von den 21 Arrayfeldern (Dateinamen) den Fehler „Index ungültig“ und markiert mit die erste Zeile des Autofilters:
Workbooks(CStr(DatNam(a))).Sheets("Tabelle1").Activate
Er erkennt also plötzlich den Wert nicht mehr, den DatNam(a) annimmt.
Hat jemand eine Idee warum?
Das sind die Dateinamen, die problemlos funktionieren:
net_comm_income_son_e.xlsm
net_interest_income_son_e.xlsm
nonintbank_loans_e.xlsm
nonintbank_loans_k.xlsm
rwa_creditrisk_k.xlsm
rwa_marketrisk_k.xlsm
shortterm_liab_e.xlsm
shortterm_liab_k.xlsm
total_assets_e.xlsm
total_assets_ejb_e.xlsm
Und diese funktionieren nicht:
capital_bs_e.xlsm
deposits_e.xlsm
deposits_k.xlsm
income_egv_e.xlsm
loans_e.xlsm
loans_k.xlsm
own_funds_k.xlsm
return_egv_e.xlsm
rwa_k.xlsm
rwa_oprisk_k.xlsm
tier1_k.xlsm
Hier noch die relevanten Auszüge aus meinem Quellcode:
Definition der Array Umgebung:
With Workbooks("Ausleseprogramm8.xlsm").Worksheets("Dateinamen")
DatNam = Array(.Range("A1"), .Range("A2"), .Range("A3"), .Range("A4"), .Range("A5"), .Range("A6"), .Range("A7"), .Range("A8"), .Range("A9"), .Range("A10"), .Range("A11"), .Range("A12"), .Range("A13"), .Range("A14"), .Range("A15"), .Range("A16"), .Range("A17"), .Range("A18"), .Range("A19"), .Range("A20"), .Range("A21"))
End With
Ausführen des Autofilters:
Workbooks(CStr(DatNam(a))).Sheets("Tabelle1").Activate
Range("C1").AutoFilter Field:=3, _
Operator:=xlFilterValues, Criteria1:=">=" & FilterDatumStrVon, Operator:=xlAnd, Criteria2:="<=" & FilterDatumStrBis
Ich würde mich über Hilfe sehr freuen!
Kai
|