Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
908to912
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
908to912
908to912
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

String suchen_zwei Konditionen_Range einfärben

String suchen_zwei Konditionen_Range einfärben
20.09.2007 20:09:00
Andreas
Liebe Herber Fans,
ich arbeite an einer großen Tabelle (Im Original über 6.000 Zeilen) und in diesem Zuge auch an Makros. Ich möchte erreichen, daß ein eingegebener Suchbegriff (in C1) als Textstring in allen Zellen der Spalte C gesucht wird. Wenn der String gefunden ist, soll die ganze Zeile eingefärbt werden.
An dieser Stelle komme ich zu zwei weiteren Bedingungen.
Es soll nur eingefärbt, bzw. überhaupt erst gesucht werden, wenn in Spalte A je Zeile eine „0“ steht. Mit 0/ n bezeichne ich gemeinhin meine Spalten um so eine Art Konsolidierungsstruktur zu realisieren.
Wenn bspw. als Suchbegriff in C1 „Hund“ eingetragen wird, soll das Makro „Hund“ als auch „Hundehalsband“ finden (aber nicht „Hundeliebhaber“ in Zeile 17, da in A17 eine 1 steht) und in den Fundzeilen die Spalten A:C einfärben (Colorindex =44). Man könnte nun überlegen das Makro selber erkennen zu lassen, welche Spalten im Tabellenblatt benutzt sind und so den Range der Einfärbung festlegen, aber ich denke manuelle Festlegung ist einfacher.
Beispieldatei:

Die Datei https://www.herber.de/bbs/user/46227.xls wurde aus Datenschutzgründen gelöscht


Mein erster Ansatz war die bedingte Formatierung mit „Istzahl und Finden“. Das ging auch ganz gut, aber ich hatte das Gefühl, die Laufzeit der Datei beim Expandieren der Gruppierung (in dieser Version nicht vorhanden) verlängerte sich dadurch. Daher die Idee einen Gegentest mit einem Makro laufen zu lassen. Wie viel Kapazität benötigt ein Makro, wenn es diese Prüfung auf 6.000 Zeilen durchführen muß?
Wie wird es konstruiert. Ich habe Ansätze gesehen „for each cell in selection“ oder active cell und offset. Aber mein Wissen reicht nicht aus, noch die Prüfung der 0 bzw. 1 durchzuführen, um die Färbung zu veranlassen.
Ich würde mich sehr freuen, wenn ihr mir helfen könnt, dieses Problem zu lösen und meinen neuen Wissensdurst in puncto Makros zu stillen.
Dank und Gruß aus Berlin,
Andreas Hanisch

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
probier das mal ...
20.09.2007 21:09:01
Matthias
Hallo Andreas
Ich habe in Spalte D zum besseren Verständnis noch eine Formel eingebaut.
Die Formel gib ein "X" zurück, wenn die Bedingungen erfüllt sind.
https://www.herber.de/bbs/user/46231.xls
Schau es Dir an und probier ein bisschen, ob es so für Dich so in Frage kommt.
Der Code greift nur, wenn in C1 geändert wird!
Userbild

AW: probier das mal ...
24.09.2007 21:46:00
Andreas
Hallo Matthias und Peter,
vielen Dank für Eure Makro- Lösungen. Beide laufen sehr gut!
Habt heute noch einen angenehmen Abend.
Grüße aus Berlin, Andreas

Anzeige
AW: String suchen_zwei Konditionen_Range einfärben
28.09.2007 18:28:44
Andreas
Hallo Peter,
ich habe Dein Makro heute in die Datei eingesetzt, die überhaupt erst die Fragestellung aufgeworfen hat. (Bedingte Formatierung mit Formel geht in dieser Datei nicht, deswegen Makro Lösung.) Ich habe nun eine leise Ahnung, wie Dein Makro funktioniert und kann es in geringem Umfang modifizieren (Ranges anpassen und automatisch Auslösung nur nach Änderung in C1).
Aber trotz dieser kleinen Erfolge ist es für mich immer noch sehr komplex was Du entwickelt hast. Respekt!
Im Verlauf der heutigen Tests und der Weiterentwicklung der Datei ist mir jedoch eine neue Konstellation aufgefallen. Beispielsweise alle Zeilen mit der Ebene 0 sind im Rahmen von Layoutvorgaben hellgelb eingefärbt. Colorindex = 36. Ergo: Wenn das Makro den String gefunden hat, wird auf Colorindex = 44 gesetzt. Wenn der Suchstring, der das auslöste aber nicht mehr aktuell ist, soll die Zeile der Ebene 0 wieder auf Colorindex = 36 gehen.
Ich habe daher diese Zeile aus Deinem Makro:
WkSh.Range("A3:C" & WkSh.Range("C65536").End(xlUp).Row).Interior.ColorIndex = xlNone
auf Colorindex 36 gesetzt. Aber woran ich mich bisher erfolglos versuchte war noch das Einbringen der Kondition „Wenn Zelle in Spalte A“ = 0, dann Colorindex 36.
Also habe ich die Befehlszeile: „If WkSh.Range("A" & rZelle.Row).Value = 0 Then“ noch davor gesetzt um die Kondition „nur auf Colorindex 36 setzten, wenn Ebene 0“ 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 kenn zu wenig über das Zusammenspiel und die Verträglichkeiten der von Dir definierten Bereiche, respektive mein VBA Wissen ist noch lange nicht ausreichend…
Ich würde mich sehr freuen, wenn Du mir den Hinweis geben kannst, was genau ich falsch mache. Wie kann ich die von mir beschriebene Kondition noch abbilden?
Vielen Dank für Deine Mühe. Die bisherige und auch wenn Du nun noch einmal aktiv wirst.
Mit den besten Wünschen für das bevorstehende Wochenende.
Andreas Hanisch, Berlin
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige