ich habe ein Makro Problem, auf das ich auch schon eine (Teil-) Lösung erhalten habe. Diese an neue Erfordernisse anzupassen gelingt mir jedoch nicht.
Aufgabe:
In einer umfangreichen Datei sollen Zwischensummen von Projekten farblich markiert werden. Dies schon beim Finden eines Strings (Eingabe in C1). Diese Zwischensummen sind auf der sog. Konsolidierungsebene 1. Auf Ebene 0 sind alle Einzelpositionen vermerkt. Diese sollen nicht gefärbt werden. Das Makro soll sich nur auf Zeilen der Ebene 1 bewegen.
Dies wäre über bedingte Formatierung (Formel ist; $A3 = 1 UND FINDEN(String)) sehr gut möglich. In einer Variante der Originaldatei auch schon umgesetzt. Aber das automatische Berechnen ist in dieser Datei aufgrund der umfangreichen Formeln deaktiviert. (Rechenzeiten von mehreren Minuten). Also greift auch bedingte Formatierung mit Formeln nicht. Deshalb Makro.
Beispieldatei
https://www.herber.de/bbs/user/46532.xls
Ich möchte anmerken, daß dieses in der Datei vorhandene Makro von Peter F. am 20.09.2007 entwickelt wurde und sehr gut funktioniert. Nochmals meine Wertschätzung für Peters Lösung an dieser Stelle!
Ich poste auch nur noch einmal, weil sich die Rahmenbedingungen geändert haben und ich diese nicht abzubilden fähig bin.
Die Zwischensummen sind aufgrund von Layoutvorgaben nun hellgelb. Wenn der Suchstring gefunden wurde, springt die betreffende Zeile auf Gold (Colorindex = 44). Wenn der Suchstring nicht mehr aktuell ist, soll sie aber wieder auf hellgelb springen. Das bekomme ich nicht hin.
Meine Ansatz:
Ich habe diese Zeile aus dem Makro:
WkSh.Range("A3:B" & WkSh.Range("B65536").End(xlUp).Row).Interior.ColorIndex = xlNone
auf Colorindex 36 gesetzt, anstatt xlNone. Aber woran ich mich bisher erfolglos versuchte war noch das Einbringen der Kondition Wenn Zelle in Spalte A = 1, dann Colorindex 36.
Also habe ich die Befehlszeile: If WkSh.Range("A" & rZelle.Row).Value = 1 Then noch davor gesetzt um die Kondition nur auf Colorindex 36 setzten, wenn Ebene 1 abzubilden.
Aber das war nach dem Verfahren Versuch und Irrtum und so konnte ich die Fehlermeldungen nicht lösen. Der Debugger hat fleißig diese Zeile eingefärbt und gemeldet, daß der IF Block fehlerhaft ist, wahlweise auch mal die With Anweisung. Ich muß nun kapitulieren. Ich kenne zu wenig über das Zusammenspiel und die Verträglichkeiten der definierten Bereiche, respektive mein VBA Wissen ist noch lange nicht ausreichend
Ich würde mich freuen, wenn ich aus dem Forum eine Rückmeldung erhalte, was ich tun muß, um mein Problem zu lösen. Zu Erfahren welche Komponenten des Makros unverträglich sind, daß es nach meinen Änderungen nicht funktioniert.
Vielen Dank und Grüße,
Andreas Hanisch, Berlin