Eine Familie von Microsoft-Tabellenkalkulationsprogrammen mit Tools zum Analysieren, Darstellen und Vermitteln von Daten.
Über den Befehl Debug.Print innerhalb der Schleife kriege ich alle gefundenen Werte angezeigt, d. h. ich gehe davon aus, dass sie jeweils im entsprechenden Feld gespeichert sind. Ich bekomme etwa 50 verschiedene Werte, d. h. strPruefung(1) bis strPruefung(50) sollten Werte gespeichert haben.
Du solltest Dich mal mit dem Debugger beschäftigen (Mit F8 den Code schrittweise ausführen, Shift_F9 Variablen überwachen, etc.)
Bei welchem Fehler fang ich an... da:
ReDim strPruefung(X)
Dieses ReDim erzeugt ein neues Array(Von bis X), das Array ist danach mit 0 gefüllt, sprich leer.
Die Werte bleiben jedoch nur erhalten wenn man ReDim ein Preserve kommt.
Wenn Du Preserve benutzt, dann muss das Array vorher schon einen Inhalt haben, ansonsten gibt es einen Fehler.
Daher initialisiert man es via strPruefung = Array() was mich zum Nächsten bringt:
Dein X ist vermutlich nicht initialisiert, daher auch 0 und bei der ersten Zuweisung machst Du X=X+1
Dein Array ist aber 0..X, d.h. das erste Feld im Array wird bei Dir nie benutzt.
Es seid denn Du hast Option Base 1 im Modul gesetzt.
Damit hast Du ggf. ein echtes Problem:
If Len(rng.Cells(cntZaehler, 1).Text) > 3 Then
strPruefung(X) = rng.Cells(cntZaehler, 1).Text
Du hast bestimmt schon mal eine Zelle gesehen die "####" zeigt und die .Text Eigenschaft liefert Dir in diesem Fall das #### statt des eigentlichen Inhaltes. Nimm die .Value Eigenschaft.
Langsam ist das ganze auch, aber bei 50 Werten... naja, da lohnt keine Optimierung.
Und wie geht's jetzt weiter? Postest Du mal das ganze Makro?
Andreas.