danke, dass du dir die Mühe machst und die Daten im "Temp"-Sheet ansiehst.
==== schon wieder ein langer Exkurs zur Situation

Die ständige Veränderung der Datenstruktur (durch den Hersteller des HV-Programms - nahezu bei jedem Update) verhindert ja, dass ich die Zerlegung direkt in das EinleseProgramm einbaue. Dort hatte ich es schon und bin schier an den permanenten Änderungen und damit neuen Fehlern verzweifelt. Zusätzlich gibt es auch noch immer wieder echte Fehler in den Daten (es werden manchmal Zeichen verschluckt, Datenspalten vertauscht etc.)
Da ich ein ganz kleines Licht in der Datenkette bin, habe ich auch nicht die Möglichkeit hier mehr Zuverlässigkeit zu verlangen.
Ich muß also das Programm um die Realität herumbauen.
Deshalb gehe ich den aufwendigen (Um)weg der Zwischenschritte:
1. suchen der einzulesenden Dateien mit FilePiker (speichern der URL in den ersten Datenblock in Sheet "Temp")
2. Einlesen der ausgewählten Dateien: (jeweils in einen nächsten Datenblock)
2.1 Übernahme der realen Zeilennummern (im LisDoc) - Eintragung in Spalte "A"
2.2 Übertragung der Rohdaten in Spalte "B"
3. erste BereinigungsStufe und Übertragung der Daten in Spalte "C"
jetzt kämen die (noch nicht neu programmierten) weiteren Auswertungen:
4. Prüfung der Daten auf Konsistenz (ggf. ERROR-Kennung in Spalte "D")
5. Zerlegung der Daten in eine (zur jew. Datei) passenden Datenbankstruktur - Eintragung in Spalten "E - "AN" (je nach Inhalt der Daten)
6. ... Weiterverarbeitung Stufe 2, Stufe 3, Stufe 4 .... (diese Stufen benötigt es, weil es in jedem ZwischenSchritt zu notwendigen Korrekturen kommen kann - und auch kommt)
Das ganze Paket habe ich 1997 in VBA geschrieben - und immer wieder korrigieren müssen (wg. der Änderungen der Struktur und zusätzlichen Auswertungsaufgaben). 2010 bin ich auf Linux umgestiegen und 2012 habe ich die alte Version (mit der Hand am Arm) in StarBasic übertragen.
Da jetzt eine weitere, erhebliche Erweiterung ansteht, habe ich mir vorgenommen, das gesamte Werk zu überarbeiten und (noch) flexibler zu gestalten. Und in diesem Zusammenhang bin auf das Problem gestoßen, wie ich jedesmal unterschiedlich große Datenblöcke lokalisieren und anschließend adressieren kann.
Und - natürlich kann man jetzt die gesamte Logik hinterfragen und an vielen Stellen anders vorgehen - ABER, das System hat ja (an fast allen Stellen) funktioniert und es ist wirklich komplex. und dafür fehlt mir (leider) auch die Zeit (und die Lust).
==== ENDE des Exkurses ======
Ich hab mir aufgrund deiner Tips noch einmal das Thema "strg+Pfeiltaste" vorgenommen und auch eine Lösung gefunden (siehe Anhang)
... bin aber gleich auf ein neues Problem bei der Verwendung von "isMissing" gestoßen:
Ich möchte meine Routinen so aufbauen, dass ich wahlweise eine BezugsZelle übergeben kann, oder - falls nicht - die "aktuelle Zelle" verwendet wird. Wenn ich das ÜbergabeArgument als "optional" deklariere verliert komischer Weise das übergebene Object seine Deklaration nach der Verwendung von "isMissing" (Vor "isMissing" ist das nicht so .... ). Bei jeder Verwendung von dem Object taucht die Fehlermeldung "BASIC-Laufzeitfehler. Variable nicht definiert" auf. Kennt jemand dieses Verhalten?
Ich habe mit der Verwendung von "TypName(<Object>) für mich einen Lösungsweg gefunden ... Vielleicht sollte ich/man dieses Problem aber in einen eigenen "Thema" beschreiben...
für mich sind meine Ausgangsfragen beantwortet und ich markiere das Thema als [gelöst].
nochmals herzlichen Dank
Gruß
StePfl