Hallo Guido,
meine Antwort war eigentlich mehr als gedankliche Anregung zum Selbstentwickeln gedacht. Ich vesuche mal zu helfen, aber ohne jede Garantie für Richtigkeit. Bitte zuerst in einer Test Datei wo keine Original Daten beschaedigt werden können testen. Bei neuen Makros bin ich da sehr vorsichtig. Zum Grundgedanken:
Ich sehe das du viele For Next Schleifen mit Array in einer Haupt For Next Schleife hast. Wenn ich das Programm richtig verstehe bearbeitet aber jede innere For Next Schleife mit Max1+2 ihr eigenes Thema. Zum Schluss wird nur eine Innenfarbe esetzt. Am Anfang der inneren Schleife wird ein Wert geladen und am Ende addiert. z.B. Dammhöhe. Weil hier aber alles addiert wird, kann man m.E. das Programm in zwei Teile zerlegen. Dim sollte weil Variable gelöscht werden besser am Anfang jedes Makor stehen stehen. Sprich, zwei separate Makros, wobei jedes für sich funktioniert
Nehme ein zweites Modulblatt und kopiere das Programm genau 1:1 in das 2 Modul. Alle Variablen und Werte müssen sein. Die Variable, die im 1+2. Makro nicht benutzt werden einfach mitführen. Sie bleiben unbenutzt! Das geht schneller und unkomplizierte als die ganze Dim Anwesisung neu schreiben. Lösche im 1. Makro alle For Next Schleifen ab Sicherungsmassnahmen nach unten, und im zweiten Makro alle For Next -vor- Sicherheitsmassnahmen. .Zwei Korrekturen sind allerdings notwendig. Und du must den Makro Namen aendern, z.B. "Berechnung_1" und "Berechnung_2" Die führst du so zusammen:
Sub gesamt_Berechnung()
Call Berechnen_1 'hier sollte Cells(93, Spalte - 1) immer gelöscht werden (Bewertung)
Call Berechnen_2 'hier Bewertung 1+2 addieren: Cells(93, Spalte - 1) = Cells(93, Spalte - 1) + Bewertung
End Sub
Korrektur in Berechnung_1 Cells(93, Spalte - 1) = Empty
Range(Cells(16, 7), Cells(37, 115)).Interior.ColorIndex = 2 'Zurücksetzen der Zellfarbe vor jedem Berechnungsvorgang
Cells(93, Spalte - 1) = Empty 'Bewertung löschen (nur im 1. For Next Programm !!)
For Spalte = 7 To 115
Korrektur in Berechnung_2 Cells(93, Spalte - 1) = Cells(93, Spalte - 1) + Bewertung
dann sollte es laufen. Probier es bitte in einer Testdatei aus.
mfg Nobody
|