Hier ein Makro, welches die Suche über mehrere bis alle Tabellenbätter
einer Arbeitsmappe gestattet. Ausserdem hat dieses Makro den Vorteil,
wirklich zu funktionieren.
In diesem Programmcode steht die Schleifenvariable für die Anzahl
der Tabellenblätter auf "
Worksheets.Count - 1". Das ist deshalb so,
weil in meiner Anwendung das letzte Arbeitsblatt ausgeschlossen werden
soll. Müssen hingegen alle Blätter durchsucht werden, kann "-1"
weggenommen werden.
Dieses Makro sucht den Begriff in dieser neuen Version im Weitersuchen-Modus
(siehe die farblich hervorgehobenen "Goto"-Sprungadressen.
Ich weiss: "Goto" ist nicht gerade ein vorbildlicher Programmierstiel,
trotzdem habe ich mich dazu entschlossen, weil der hier vorgestellte
Code nun wirklich nicht derart lang ist, als dass ihn die Sprungadressierung
unübersichtlich und unverständlich machen würde.
Ausserdem erscheint in der Makroliste (ALT+F8) dann nur ein einziges
Makro, während bei der Programmierung mit Subroutinen hier mehrere
Makros aufgelistet würden. Das kann unter Umständen zur Verwirrung führen,
wenn man das Programm nicht gerade als Add-In einbinden möchte.
Wenn die "Weitersuchen-
Funktion nicht gewünscht wird, muss der Code angepasst werden,
indem man die "Weitersuchen"-Zeilen auskommentiert und stattdessen
die Kommentierung der "Exit Sub"-Zeilen aufhebt.
Dadurch, dass die Variable "
strSuch" als public deklariert wird,
steht der in ihr gespeicherte Suchbegriff auch beim nächsten Aufruf des
Makros zur Verfügung und der Inhalt wird direkt in das Eingabefenster
für den Suchbegriff eingefügt bzw. vorgeschlagen.
Wurde nichts gefunden, kommt am Ende die Erfolglos-Meldung und die Stelle
vor der Ausführung des Makros wird im Workbook selektiert.
Wird kein Suchbegriff eingegeben, wird das Makro abgebrochen.
Versionsinformation:
Im Unterschied zur Vorgängerversion sucht dieses Makro nun ab der
auf die aktive Zelle folgende Zelle. Dadurch wird erreicht, dass
auch ein auf einer Seite mehrfach vorhandener Suchbegriff sicher
gefunden wird.
Erst wenn auf einer Seite zum letzten mal der Suchbegriff gefunden
wurde, wird zur nächsten Seite gewechselt und immer wenn der Begriff
nicht gefunden wurde, wird auch die nächste Seite aufgerufen.
Im allerletzten Schleifendurchlauf wird noch einmal die Startseite
durchsucht. Denn abhängig von der Position der aktiven Zelle wird
auf dem Start-Suchblatt ja nur der Rest der Zellen ab der Startzelle
durchsucht. Darum muss am Ende ja auch noch der Teil vor der Startzelle
durchsucht werden.
Der Grund für diese Vorgehen ist einfach:
Würde man auf dem Startblatt ab Zelle 1 die Suche beginnen, so würde
bei jedem Weitersuchen-Durchlauf immer nur die erste Zelle, die den
Suchbegriff enthält, gefunden werden -wir kämen nie von der Stelle.
Es gab bei der Entwicklung auch noch einige andere Probleme, die
abhängig von der Anzahl der Fundstellen auf einem Blatt, der relativen Position
der ersten Fundseite zur Startseite usw., unterschiedlich in Erscheinung
traten. All diese Fehler sind in der hier vorliegenden Version
beseitigt.