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 Datei-en 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:
[code]Workbooks(CStr(DatNam(a))).Sheets("Tabelle1").Activate [\code]
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:
[list]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 [\list]
Und diese funktionieren nicht:
[list]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 [\list]
Hier noch die relevanten Auszüge aus meinem Quellcode:
Definition der Array Umgebung:
[code]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 [\code]
Ausführen des Autofilters:
[code]Workbooks(CStr(DatNam(a))).Sheets("Tabelle1").Activate
Range("C1").AutoFilter Field:=3, _
Operator:=xlFilterValues, Criteria1:=">=" & FilterDatumStrVon, Operator:=xlAnd, Crite-ria2:="<=" & FilterDatumStrBis [\code]
Ich würde mich über Hilfe sehr freuen!
Kai
|