Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Suchen über mehrere Tabellenblätter

Suchen über mehrere Tabellenblätter
12.10.2004 13:18:31
Michael
Hallo nocheinmal
Ich habe eine Suchfunktion über einer Inputbox gefunden (Suchen über mehrere Tabellenblätter). Kann man das so modifiziern, daß die Namen schon gefunden werden, wenn man nur die Hälfte eingibt. Z.B. "Mayer" suchen will ich mit "May". Und kann man trotz aktivierter Inputbox das Tabellenblatt bearbeiten?

Sub Suchen()
Dim wks As Worksheet
Dim rng As Range
Dim sAddress As String, sFind As String
sFind = InputBox(vbCr & vbCr & "Bitte Suchbegriff eingeben:", _
"Eingabe Suchbegriff")
If sFind = "" Then Exit Sub
For Each wks In Worksheets
Set rng = wks.Cells.Find(what:=sFind, _
lookat:=xlWhole, LookIn:=xlFormulas)
If Not rng Is Nothing Then
sAddress = rng.Address
Do
Application.Goto rng, True
Application.Goto Reference:=Range("A1"), Scroll:=True
Range(rng.Address).Select
If MsgBox("Soll die Suche fortgesetzt werden ?", _
vbYesNo + vbQuestion, "Frage an " & _
Application.UserName & ":") = vbNo Then Exit Sub
Set rng = Cells.FindNext(after:=ActiveCell)
If rng.Address = sAddress Then Exit Do
Loop
End If
Next wks
MsgBox "Es gibt keine neue Fundstelle !", vbYes + vbInformation, _
"Dezenter Hinweis für " & Application.UserName & ":"
End Sub

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suchen über mehrere Tabellenblätter
Beni
Hallo Michael,
definiere Suchbegriff & "*"
Gruss Beni

Sub Suchen()
Dim wks As Worksheet
Dim rng As Range
Dim sAddress As String, sFind As String
sFind = InputBox(vbCr & vbCr & "Bitte Suchbegriff eingeben:", _
"Eingabe Suchbegriff") & "*" ' plus Sterchen
If sFind = "" Then Exit Sub
For Each wks In Worksheets
Set rng = wks.Cells.Find(what:=sFind, _
lookat:=xlWhole, LookIn:=xlValues)
If Not rng Is Nothing Then
sAddress = rng.Address
Do
Application.Goto rng, True
Application.Goto Reference:=Range("A1"), Scroll:=True
Range(rng.Address).Select
If MsgBox("Soll die Suche fortgesetzt werden ?", _
vbYesNo + vbQuestion, "Frage an " & _
Application.UserName & ":") = vbNo Then Exit Sub
Set rng = Cells.FindNext(after:=ActiveCell)
If rng.Address = sAddress Then Exit Do
Loop
End If
Next wks
MsgBox "Es gibt keine neue Fundstelle !", vbYes + vbInformation, _
"Dezenter Hinweis für " & Application.UserName & ":"
End Sub

Anzeige
AW: Suchen über mehrere Tabellenblätter
Uduuh
Hallo,
zu 1:
Set rng = wks.Cells.Find(what:=sFind, _
lookat:=xlPart, LookIn:=xlFormulas)
zu 2: nein
Gruß aus'm Pott
Udo

danke noch eine Frage
12.10.2004 13:50:18
Michael
Danke
Genau das habe ich gesucht. Gibt es vielleicht eine andere Möglichkeit (Ohne Inputbox - vielleicht) Vielleicht mit einer Userform wo man das Tabellenblatt trotz aktivierter Userform bearbeiten kann.
Gruß Michael
Anzeige
AW: danke noch eine Frage
Uduuh
Hallo,
ja geht.
showModal-Eigenschaft der UF auf False setzen.
Gruß aus'm Pott
Udo

danke noch eine Frage
12.10.2004 14:02:11
Michael
Danke
Ich hoffe daß das nicht unverschämt ist von mir. Aber wie kann ich den Code von der Inputbox so umwandeln daß das mit der Userform funktioniert? Oder muß der Code total umgeschrieben werden? Falls ja, dann begnüge ich mich mit der Inputbox (Besser als gar nichts)
Grüße an den Pott
Michael
Anzeige
Selbst Herausgefunden
12.10.2004 14:09:41
Michael
Danke nocheinmal für Eure Hilfe. Ich glaube es funktioniert so. Zumindest muß ich nichts debuggen.

Private Sub CommandButton1_Click()
Dim wks As Worksheet
Dim rng As Range
Dim sAddress As String, sFind As String
sFind = TextBox1 & "*" ' plus Sterchen
If sFind = "" Then Exit Sub
For Each wks In Worksheets
Set rng = wks.Cells.Find(what:=sFind, _
lookat:=xlWhole, LookIn:=xlValues)
If Not rng Is Nothing Then
sAddress = rng.Address
Do
Application.Goto rng, True
Application.Goto Reference:=Range("A1"), Scroll:=True
Range(rng.Address).Select
If MsgBox("Soll die Suche fortgesetzt werden ?", _
vbYesNo + vbQuestion, "Frage an " & _
Application.UserName & ":") = vbNo Then Exit Sub
Set rng = Cells.FindNext(after:=ActiveCell)
If rng.Address = sAddress Then Exit Do
Loop
End If
Next wks
MsgBox "Es gibt keine neue Fundstelle !", vbYes + vbInformation, _
"Dezenter Hinweis für " & Application.UserName & ":"
End Sub

Grüße aus Österreich
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige