Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
744to748
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
744to748
744to748
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Suchfunktion anpassen - wer kann helfen?

Suchfunktion anpassen - wer kann helfen?
14.03.2006 16:32:26
Dana
Hallo liebe Excel-Experten.
Unten aufgeführtes Makro sucht über alle Tabellenblätter nach einem eingegebenen Begriff und markiert die gefundene Zelle farbig. Dann erfolgt eine Abfrage, ob man weitersuchen will. Hier mein erstes Problem: Drückt man nun auf "nein", so dass die Suche abbricht, wird die Farbe nicht rückgängig gemacht und die zuletzt gefundene Zelle bleibt farbig markiert. Wer kann mir das Makro so anpassen, dass es auch beim vorzeitigen Beenden der Suche, die zuletzt gefundene Zelle wieder farblos darstellt? Und mein zweites Problem ist: wie lasse ich das Makro nur in einem bestimmten Zellbereich (z.B. B1:B100) suchen?. Vielen vielen Dank für Eure Hilfe. Ich tüftle jetzt einfach schon zu lange ;-)
Gruss Dana

Sub Suchen_alle_Tab()
Dim wks As Worksheet
Dim rng As Range
Dim strSuch As String
Dim strAddress As String, strFind As String
strFind = InputBox("Bitte Suchbegriff eingeben:", Application.UserName, strSuch)
If strFind = "" Then Exit Sub
For Each wks In Worksheets
Set rng = wks.Cells.Find(strFind, lookat:=xlPart, LookIn:=xlFormulas)
If Not rng Is Nothing Then
strAddress = rng.Address
Do
Application.Goto rng, False
Selection.Interior.ColorIndex = 40
If MsgBox("Weiter", vbYesNo + vbQuestion) = vbNo Then Exit Sub
Selection.Interior.ColorIndex = xlNone
Set rng = Cells.FindNext(After:=ActiveCell)
If rng.Address = strAddress Then Exit Do
Loop
End If
Next wks
strSuch = strFind
MsgBox "Dokument wurde durchsucht!", False, Application.UserName
Selection.Interior.ColorIndex = xlNone
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Mmmhhh.... - VBA gut?
14.03.2006 16:35:42
{Boris}
Hi Dana,
zu 1)
Stell diese 2 Zeilen einfach um:
Selection.Interior.ColorIndex = 40
If MsgBox("Weiter", vbYesNo + vbQuestion) = vbNo Then Exit Sub
Zu 2)
Statt Cells einfach Range("B1:B100")
Grüße Boris
AW: Mmmhhh.... - VBA gut?
14.03.2006 17:19:25
Dana
Hallo Boris
... keine Ahnung wie das "VBA gut" dahin kommt. Hab mich wohl beim nach unten gehen verscrollt... ich such mir die meisten Makros aus dem Netz zusammen und pass sie dann mit meinen WENIGEN Erfahrungen an.
Leider genügen diese nicht, um Deine Vorschläge einzubauen.
zu 1)
ich weiss nicht, wie ich ihm sagen soll, dass er BEVOR das Makro beendet wird (Then Exit Sub), die Farbe löscht. "Einfach umstellen" funktioniert leider nicht :-(
zu 2)
an welcher Stelle genau muss ich "Cells" ersetzen? Habe es ein wenig versucht, funktioniert aber auch nicht.
Vielleicht hast Du noch einen Tip?
Danke
Dana
Anzeige
AW: Mmmhhh.... - VBA gut?
14.03.2006 17:31:06
Lars
Option Explicit

Sub Suchen_alle_Tab()
Dim wks As Worksheet
Dim rng As Range
Dim strSuch As String
Dim strAddress As String, strFind As String
strFind = InputBox("Bitte Suchbegriff eingeben:", Application.UserName, strSuch)
If strFind = "" Then Exit Sub
For Each wks In Worksheets
Set rng = wks.[B1:B100].Find(strFind, lookat:=xlPart, LookIn:=xlFormulas)
If Not rng Is Nothing Then
strAddress = rng.Address
Do
Application.Goto rng, False
Selection.Interior.ColorIndex = 40
If MsgBox("Weiter", vbYesNo + vbQuestion) = vbNo Then
Selection.Interior.ColorIndex = xlNone
Exit Sub
End If
Set rng = wks.[B1:B100].FindNext(After:=ActiveCell)
If rng.Address = strAddress Then Exit Do
Loop
End If
Next wks
strSuch = strFind
MsgBox "Dokument wurde durchsucht!", False, Application.UserName
Selection.Interior.ColorIndex = xlNone
End Sub

mfg Lars
Anzeige
AW: Mmmhhh.... - VBA gut?
14.03.2006 17:34:15
Dana
Hallo Lars,
vielen vielen Dank.
Es funktioniert klasse!
Gruss Dana
Mit Verlaub...
14.03.2006 17:46:45
{Boris}
Hi Dana,
...auch wenn bereits gelöst:
Was ist daran nicht zu verstehen, diese beiden Zeilen umzustellen?
VORHER
Selection.Interior.ColorIndex = 40
If MsgBox("Weiter", vbYesNo + vbQuestion) = vbNo Then Exit Sub
NACHHER
If MsgBox("Weiter", vbYesNo + vbQuestion) = vbNo Then Exit Sub
Selection.Interior.ColorIndex = 40
Also erst NACH der Frage einfärben. Warum sollte das nicht funktionieren?
Grüße Boris
AW: Mit Verlaub...
14.03.2006 19:01:30
Lars
Hi,
Dana will vielleicht die gefundenen Zelle erstmal farbig sehen und dann entscheiden?
mfg Lars
Anzeige
AW: Mmmhhh.... - VBA gut?
18.03.2006 14:48:55
Bernd
Hallo Lars,
nach langer Suche habe ich Deinen Skript _Suchen_alle_Tab() gefunden. Ich habe mich sehr gefreut. Er funktioniert bei mir innerhalb einer Mappe über die darin enthaltenen 3 Tabellen hervorragend.(auch über 14 Tabellen in dieser Mappe)
Wie kann ich die Funktion auf weitere Mappen in dieser Datei ausdehnen, die sich in weiteren 6 Mappen mit je 3 Tabellen befinden?
Ich habe es mit dem Zusatz:
Dim wbk As Workbooks
Workbooks.Open Filename:="D:\xxx\xxx\xxx\30.6.2004.xls"
versucht und ...Laufzeitfehler 1004 erhalten.
Du findest sicher die Fehler dabei.
Für eine ev. Hilfe im voraus den besten Dank.
mit fr. Grüßen
Friedrich
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige