Hallo Hatsch,
erstmal: mit immer mehr lokalen Variablen ist dir auch nicht geholfen... (Siehe Attachment, ohne locals, mit Shiftregister).
Was dir noch fehlt, ist ein genauerer Ablaufplan. Hast du den schon mal für deine Routine auf ein Blatt Papier gemalt?
Dann würdest du feststellen, dass du beim "Ändern" nicht immer wieder den Rest der Tabelle neu generieren dürftest (so wie es bisher geschieht)!
Also: WENN "Ändern" DANN Nicht(Neuerstellen) !
Hinweis zur Lösung:
Die Reihenfolge deiner Case-Strukturen ist verkehrt. Du müsstest erst unterscheiden, ob "Ändern" oder "Übernehmen" und, abhängig von dieser Unterscheidung, Daten neu erstellen oder alte Daten bearbeiten. Zum "alte Daten bearbeiten" benötigst du natürlich ein Shiftregister, welches dir die "alten" Daten des vorigen Durchlaufs bereitstellt.
Noch ein Hinweis:
Schleifen laufen nicht unbedingt schneller, nur weil keine Wartefunktion eingebaut ist... Bei UI-Geschichten kannst du immer mindestens 100ms Wartezeit einbauen - so schnell kann keiner klicken...