1.4k Aufrufe
Gefragt in Tabellenkalkulation von
Guten Abend,

ich habe ein Problem. Das Code habe ich aus dem Internet und es funktioniert auch soweit.
Die erste Datei läuft ohne Probleme danach fängt wieder von oben an und nimmt die zweite Datei da bekomme ich eine Fehlermeldung

Fehlermeldung "Laufzeitfehler 9 - Index außerhalb des gültigen Bereichs"
- > ReDim Preserve FeldArray(ws.AutoFilter.Range.Rows.Count, ws.AutoFilter.Range.Columns.Count)

Bitte um hilfe
Vielen Dank
LG, Alana

NUR EIN TEIL

Range("A4:O4").Select
Selection.AutoFilter

Dim i As Long, u As Long, z As Integer, t As Integer, r As Integer

Dim str_ausgabe As String

Dim ws As Worksheet

Dim FeldArray()

Set ws = Worksheets(1)


'Prüfen, ob überhaupt ein Autofilter gesetzt ist

If ws.AutoFilterMode = True Then

Else
Range("A1:o1").Select

Selection.AutoFilter
' MsgBox "Kein AutoFilter gefunden!", vbInformation, "Achtung"

'Exit Sub

End If

'Der Array wird für die Datenaufnahme vorbereitet. Die Größe ergiebt sich aus dem Bereich

'(columns und rows) des Auofilter's

ReDim Preserve FeldArray(ws.AutoFilter.Range.Rows.Count, ws.AutoFilter.Range.Columns.Count)


'Variable u beinhaltet die Anzahl der Spalten des Autofilterbereiches

For u = 1 To 9 'ws.AutoFilter.Range.Columns.Count
'u = "10"
r = 1

'Variable i beinhaltet die Anzahl der Reihen des Autofilterbereiches

For i = 1 To ws.AutoFilter.Range.Rows.Count

'Der erste Spaltenwert eines Filters wird ohne Prüfung in den Array eingetragen,

'da dieser noch nicht Doppelte sein kann

If i = 1 Then


FeldArray(i, u) = ws.AutoFilter.Range.Cells(i, u)

Else

For z = 1 To i - 1

'Nun wird die aktuelle zelle des Autofilterbereiches mit den schon im Array eingetragenen Werten verglichen

'Ist er gleich, so wird die Sprungmarke weiter angesteuert

'ist er nicht gleich, so wird der Array um diesen Datensatz erweitert

If ws.AutoFilter.Range.Cells(i, u) = FeldArray(z, u) Then

GoTo Weiter

End If

Next z

r = r + 1

'array wird erweitert

FeldArray(r, u) = ws.AutoFilter.Range.Cells(i, u)

Weiter:

End If 'i=then

Next i

Next u

4 Antworten

0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Alana,

soll das Array tatsächlich erweitert werden, wobei die bereits vorhandenen Daten erhalten bleiben oder soll das Array geleert und dann wieder neu gefüllt werden?

Bis später,
Karin
0 Punkte
Beantwortet von
Hallo Karin,

das Array soll wieder geleert werden und dann wieder neu gefüllt

Wäre Super wenn du mir helfen kannst.

Vielen Dank im voraus
LG, Alana
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Alana,

versuche es mal so:

1. schreibe vor die Zeile mit dem Fehler: EraseFeldArray()
2. lasse PRESERVE in der Zeile weg

Bis später,
Karin
0 Punkte
Beantwortet von
Vielen Dank, Karin

LG, Alana
...