Hallo,
ich habe mal eine grundsätzliche Frage. Das Posting etwas weiter oben hat mich darauf aufmerksam gemacht:
Wenn ich eine Tabelle mittels FOR-NEXT Zeile für Zeile abarbeite und, je nach Absicht, Zeilen lösche oder einfüge, dann stimmt ja die Obergrenze für den Zeilenindex nicht mehr. Außerdem habe ich dann in der nächsten Zeile das Problem, daß das Programm entweder die gleiche Zeile nochmal bearbeitet oder eine überspringt.
Wie programmiert man sowas als Profi?
Viele Grüße
Martin
Wie programmiert man sowas als Profi?
Das heißt latürnich nicht, daß sich jetzt nur „Profis“ zu Wort melden „dürfen“. ;o)
Moin, Martin,
Wie programmiert man sowas als Profi?
einfachste und sicherste Lösung: gar nicht, statt dessen neues Blatt / neue Datei anlegen.
Gruß Ralf
wenn Du z.B. mit Activecell.Offset(i,j) arbeitest dann setzt Du einfach den jeweiligen Wert wieder um eins zurück… so wird dann die aktuelle Zeile/Spalte nochmal bearbeitet…
Wenn Du einfügst, dann zählst Du natürlich drauf - is ja klar… 
Grüße
Munich
Hallo,
du bearbeitest die Tabelle einfach von unten nach oben
(z.B. for intX = 1000 to 1 step -1)
dann stören gelöschte zeilen die Zählung nicht.
Gruß, Bernd
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hi Martin,
ich habe mal eine grundsätzliche Frage. Das Posting etwas
weiter oben hat mich darauf aufmerksam gemacht:
weiter oben, hast du ne Glaskugel und weißt welche Posting über dir noch kommen? *grien*
Wenn ich eine Tabelle mittels FOR-NEXT Zeile für Zeile
abarbeite und, je nach Absicht, Zeilen lösche oder einfüge,
dann stimmt ja die Obergrenze für den Zeilenindex nicht mehr.
Außerdem habe ich dann in der nächsten Zeile das Problem, daß
das Programm entweder die gleiche Zeile nochmal bearbeitet
oder eine überspringt.
Wie programmiert man sowas als Profi?
Tja, das kann nur ein Profi sagen.
Bernds Ansatz ist der effektivste bzw wird immer benutz, also von unten nach oben in der Tabelle die zeilen durchgehen bei Zeilenlöschung.
Beim Zeileneinfügen muss man halt nach/beim Einfügen den Schleifenzähler korrigieren um die Anzahl der eingefügten Zeilen.
Die Tabelle von oben nach unten abzuarbeiten geht natürlich auch, ist aber aufwendiger zu programmieren.
Alternativ gäbs noch die While-Schleife aber da muss man bei jeder Löschung/Einfügung den Zeilenzähler korrigieren, jetzt mal so ungetestet/undurchdacht behaupte.
Gruß
Reinhard
Hi,
danke für eure Antworten.
Wirklich neu war nur der Ansatz von Ralf, die bearbeiteten Zeilen in ein neues Tabellenblatt zu kopieren. Damit es im Laufe der Zeit nicht immer mehr Tabellenblätter werden, kann man sie bei Bedarf in eine andere Datei auslagern. Wobei alte Datenbestände (falls mal etwas schief geht) ja eh’ durch Wiederherstellen von Backups zurückgeholt werden könnten.
Die anderen Verfahren, das In- bzw Dekrementieren des Zeilenindexes oder das Bearbeiten der Tabelle von unten nach oben (wenn Zeilen gelöscht werden sollen) verwende ich auch. Ich war aber nicht sonderlich glücklich mit diesen Verfahren, drum dachte ich, vielleicht hat einer von euch eine geniale Idee.
Das ist ein bisserl ein Problem bei manchen Programmierern, daß sie im stillen Kämmerlein vor sich hin wurschteln. Man müsste sich mehr mit anderen austauschen und deren Programme durcharbeiten. Da könnte man bestimmt viel lernen. Auch wenn das Ergebnis einfach nur lautet: so wie ich es mache, machen es Andere auch. Es gibt nix Besseres.
Viele Grüße aus dem stillen Kämmerlein :o)
Martin
PS:
Danke für die geniale Enttarnung, Reinhard!! ;o))