Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1432to1436
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
Inhaltsverzeichnis

Suchfunktion VBA

Suchfunktion VBA
06.07.2015 16:12:14
Alwin
Hallo zusammen,
ich habe in eine Excel ein Makro eingefügt, das ich im Internet gefunden habe. Mit diesem Makro kann man nach Suchbegriffen in der gesamten Datei suchen. Es funktioniert auch (fast) einwandfrei. Die Suche beginnt immer auf dem ersten Tabellenblatt - auch wenn ich gerade auf dem 5. Tabellenblatt bin und dort auch das erste Ergebnis ist, wonach ich suche. Kann mir hierbei jemand weiterhelfen?
Das Makro sieht wie folgt aus:
Option Explicit
Global SSearch As String

Public Sub SearchAllTables()
Dim ws As Worksheet
Dim c
Dim firstAddress As String
Dim secAddress
Dim GFound As Boolean
Dim GWeiter As Boolean
GWeiter = False
GFound = False
anf:
SSearch = InputBox("Suchen nach:", "Stichwort-Suche / Suchfunktion", SSearch)
If SSearch = "" Then
End
End If
weiter:
For Each ws In Worksheets
'ws.Select
With ws.Cells
Set c = .Find(SSearch, LookIn:=xlValues, MatchCase:=False)
If Not c Is Nothing Then
GFound = True
ws.Select
c.Select
firstAddress = c.Address
If MsgBox("Weitersuchen?", vbQuestion + vbYesNo) = vbYes Then
Do
Set c = .FindNext(c)
secAddress = c.Address
If c.Address = firstAddress Then
Exit Do
End If
c.Select
If MsgBox("Weitersuchen?", vbQuestion + vbYesNo) = vbNo Then
GWeiter = True
GoTo ende
End If
Loop While Not c Is Nothing And secAddress  firstAddress And c.Address  firstAddress
Else
GWeiter = True
GoTo ende
End If
End If
End With
Next ws
ende:
If GFound = False Then
If MsgBox("Suchwert nicht gefunden! Neue Suche?", vbInformation + vbYesNo) = vbYes Then
GoTo anf:
End If
Else
If GWeiter = False Then
If MsgBox("Es wurden alle in Frage kommenden Suchbegriffe angezeigt! Soll die Suche neu  _
gestartet werden?", vbInformation + vbYesNo) = vbYes Then
GoTo weiter
End If
End If
End If
End Sub
Vielen Dank im Voraus
Alwin

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suchfunktion VBA
06.07.2015 18:26:34
Michael
Hallo Alwin,
man *könnte* den Code ändern, so daß zuerst das aktive Blatt durchsucht wird, aber das macht den Code nicht übersichtlicher.
Vorschlag 1: Du kopierst das ganze Ding und benennst die Kopie um, etwa auf SearchThisTable und wirfst alles raus, was sich *nicht* auf das gerade aktive Blatt bezieht oder
Vorschlag 2: Du verwendest einfach die Excel-Suchfunktion.
Ich würde insgesamt letzteres vorziehen, denn Excel sucht ja auf Wunsch ("Optionen" im Suchdialog) sowohl im aktiven Blatt als auch in der ganzen Datei, und ich sehe keinen Grund, nicht eine *eingebaute* Funktion zu verwenden, die nämlich genau das tut, was Du brauchst.
Sagen wir mal so: wenn Du die Suche "automatisch" in VBA vornehmen würdest, nach einem Begriff, den die Suche von einem anderen Makro übergeben bekommt oder sich irgendwo aus einer Tabelle holt, sehe ich ein, daß man es "programmieren" muß. Aber wenn Du sowieso den Begriff händisch eingibst, kannst Du gleich Strg+F drücken.
Schöne Grüße,
Michael

Anzeige
AW: Suchfunktion VBA
06.07.2015 19:05:30
Daniel
Hi
Ersetze das:
For Each Ws In Worksheets
durch:
Dim i As Long
Dim j As Long
Dim ws As Worksheet
j = ActiveSheet.Index
For i = 0 To ActiveWorkbook.Sheets.Count - 1
Set ws = Sheets((i - 1 + j) Mod ActiveWorkbook.Sheets.Count + 1)
hier wird dann mit dem aktiven Sheet, die Schleife läuft dann weiter bis zum letzen Sheet, startet dann bei Sheet 1 und läuft bis zum Sheet vor dem aktiven.
Funktioniert jetzt so einfach aber nur, wenn du keine Diagrammblätter hast.
Mit Diagrammblättern wirds dann etwas komplizerter.
gruß daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige