Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Suchen in gesamter Arbeitsmappe

Forumthread: Suchen in gesamter Arbeitsmappe

Suchen in gesamter Arbeitsmappe
25.08.2005 12:13:04
Timo
Hallo liebe Excel- Cracks,
ich habe folgende (zu mindest für mich) Herausforderung zu lösen:
Ich möchte in einer Excel-Datei mit 5 Datenblättern (a,b,c,d,e) eine Suchfunktion einbauen. Die Suchfunktion soll in jedem Blatt alle Zellen durchleuchten und jeweils bei Erfolg anzeigen. Nach Anzeige der Zelle soll die Abfrage starten ob weitergesucht werden soll. Falls nichts gefunden wird soll die Anzeige "'Suchbegriff' nicht gefunden" ausgespuckt werden.
Diese Suchfunktion soll per Knopfdruck starten und befindet sich auf dem ersten Datenblatt (a). Für die Abfrage habe ich ein Makro geschrieben/ gebastelt, komme jetzt aber nicht mehr weiter (Fehlermeldung: Fehler beim Kompilieren - IF Block ohne END-IF)
Anbei mein bisher vollbrachtes Werk:

Sub Suchen()
Dim Eingabe As String
Dim Feld As Range
Dim Gefunden As Boolean
Dim Antwort As Long
[A1].Select
Eingabe = Application.InputBox("Bitte Suchbegriff eingeben", "Suche", "Suchbegriff")
If Eingabe <> "" Then
For Each Feld In ActiveSheet.UsedRange
If InStr(UCase(CStr(Feld.Value)), UCase(Eingabe)) > 0 Then
Gefunden = True
Feld.Select
Antwort = MsgBox("Weitersuchen?", vbQuestion + vbYesNo)
If Antwort = vbNo Then
Exit For
End If
End If
Next Feld
If Gefunden = False Then
For Each Feld In sheets("b").UsedRange
If InStr(UCase(CStr(Feld.Value)), UCase(Eingabe)) > 0 Then
Gefunden = True
Feld.Select
Antwort = MsgBox("Weitersuchen?", vbQuestion + vbYesNo)
If Antwort = vbNo Then
Exit For
End If
End If
Next Feld
If Gefunden = False Then
For Each Feld In sheets("c").UsedRange
If InStr(UCase(CStr(Feld.Value)), UCase(Eingabe)) > 0 Then
Gefunden = True
Feld.Select
Antwort = MsgBox("Weitersuchen?", vbQuestion + vbYesNo)
If Antwort = vbNo Then
Exit For
End If
End If
Next Feld
If Gefunden = False Then
For Each Feld In sheets("d").UsedRange
If InStr(UCase(CStr(Feld.Value)), UCase(Eingabe)) > 0 Then
Gefunden = True
Feld.Select
Antwort = MsgBox("Weitersuchen?", vbQuestion + vbYesNo)
If Antwort = vbNo Then
Exit For
End If
End If
Next Feld
If Gefunden = False Then
For Each Feld In sheets("e").UsedRange
If InStr(UCase(CStr(Feld.Value)), UCase(Eingabe)) > 0 Then
Gefunden = True
Feld.Select
Antwort = MsgBox("Weitersuchen?", vbQuestion + vbYesNo)
If Antwort = vbNo Then
Exit For
End If
End If
Next Feld
If Gefunden = False Then
MsgBox "'" & Eingabe & "' nicht gefunden!", vbInformation
End If
End If
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Suchen in gesamter Arbeitsmappe
25.08.2005 13:17:20
Heiko
Hallo Timo,
dein Code war mir ein wenig zu unübersichtlich, du solltest dir auf jeden Fall angewöhnen bei Schleifen If Anweisungen usw. den Code einzurücken, damit findet man sicherlich schneller den Fehler. Aber so gehts auch.

Sub Suchen()
Dim booGefunden As Boolean
Dim strEingabe As String
Dim rngFeld As Range
Dim wksSheet As Worksheet
strEingabe = Application.InputBox("Bitte Suchbegriff eingeben", "Suche", "Suchbegriff")
If strEingabe <> "" Then
For Each wksSheet In ActiveWorkbook.Worksheets
For Each rngFeld In wksSheet.UsedRange
If InStr(UCase(CStr(rngFeld.Value)), UCase(strEingabe)) > 0 Then
booGefunden = True
wksSheet.Activate
rngFeld.Select
If MsgBox("Weitersuchen?", vbQuestion + vbYesNo) = vbNo Then Exit Sub
End If
Next rngFeld
Next wksSheet
If booGefunden = False Then MsgBox "'" & strEingabe & "' nicht gefunden!", vbInformation
End If
End Sub


Gruß Heiko

PS: Rückmeldung wäre nett !
Anzeige
AW: Suchen in gesamter Arbeitsmappe
25.08.2005 16:08:08
Timo
Hallo Heiko,
ich kann's kaum glauben. Genau so wollte ich den Code bzw. das Makro haben!!!
Vielen vielen Dank für deine schnelle und super-kompetente Hilfe. Und den Tipp mit dem Code einrücken werde ich mir merken.
Viele Grüße,
Timo
;
Anzeige
Anzeige

Infobox / Tutorial

Suchen in der gesamten Excel-Arbeitsmappe


Schritt-für-Schritt-Anleitung

Um in einer Excel-Arbeitsmappe mit mehreren Blättern nach einem bestimmten Begriff zu suchen, kannst du ein einfaches Makro verwenden. Folgende Schritte sind erforderlich:

  1. Makro erstellen:

    • Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.
  2. Code einfügen:

    • Kopiere den folgenden Code und füge ihn in das Modul ein:
    Sub Suchen()
       Dim booGefunden As Boolean
       Dim strEingabe As String
       Dim rngFeld As Range
       Dim wksSheet As Worksheet
       strEingabe = Application.InputBox("Bitte Suchbegriff eingeben", "Suche", "Suchbegriff")
       If strEingabe <> "" Then
           For Each wksSheet In ActiveWorkbook.Worksheets
               For Each rngFeld In wksSheet.UsedRange
                   If InStr(UCase(CStr(rngFeld.Value)), UCase(strEingabe)) > 0 Then
                       booGefunden = True
                       wksSheet.Activate
                       rngFeld.Select
                       If MsgBox("Weitersuchen?", vbQuestion + vbYesNo) = vbNo Then Exit Sub
                   End If
               Next rngFeld
           Next wksSheet
           If booGefunden = False Then MsgBox "'" & strEingabe & "' nicht gefunden!", vbInformation
       End If
    End Sub
  3. Makro ausführen:

    • Schließe den VBA-Editor und gehe zurück zu Excel.
    • Drücke ALT + F8, wähle Suchen aus der Liste und klicke auf Ausführen.
  4. Suchbegriff eingeben:

    • Ein Eingabefeld erscheint, in das du den Suchbegriff eingeben kannst. Das Makro durchsucht die gesamte Arbeitsmappe.

Häufige Fehler und Lösungen

  • Fehlermeldung: "Fehler beim Kompilieren - IF Block ohne END-IF":

    • Überprüfe, ob alle If-Anweisungen ordnungsgemäß mit End If geschlossen wurden.
  • Makro funktioniert nicht:

    • Stelle sicher, dass die Makros in deinen Excel-Einstellungen aktiviert sind. Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center > Makroeinstellungen.

Alternative Methoden

Wenn du keine Makros verwenden möchtest, gibt es auch die Möglichkeit, die Suchfunktion von Excel zu nutzen:

  1. Drücke STRG + F.
  2. Gebe den Suchbegriff ein und klicke auf Weitersuchen.
  3. Um die gesamte Arbeitsmappe zu durchsuchen, klicke auf Optionen und wähle Gesamte Arbeitsmappe aus.

Diese Methode ist jedoch weniger automatisiert und erfordert mehr manuelles Vorgehen.


Praktische Beispiele

Angenommen, du hast eine Excel-Datei mit den Blättern a, b, c, d und e, in denen du nach dem Begriff "Umsatz" suchen möchtest. Der obige VBA-Code durchsucht alle Blätter und fragt nach jeder gefundenen Zelle, ob du weitersuchen möchtest.


Tipps für Profis

  • Code einrücken: Achte darauf, deinen VBA-Code ordentlich einzurücken. Das macht es einfacher, Fehler zu finden.

  • Suchbegriffe variieren: Überlege, mehrere Varianten deines Suchbegriffs zu testen, um sicherzustellen, dass du keine relevanten Daten übersiehst.

  • Fehlerbehandlung: Integriere eine Fehlerbehandlung in dein Makro, um unerwartete Probleme abzufangen.


FAQ: Häufige Fragen

1. Kann ich das Makro anpassen, um auch nach Teilbegriffen zu suchen?
Ja, du kannst die InStr-Funktion so anpassen, dass sie Teilbegriffe berücksichtigt, indem du die Suche entsprechend konfigurierst.

2. Funktioniert das Makro in Excel 2016 und neuer?
Ja, das Makro funktioniert in Excel 2016, 2019 und Excel 365. Stelle sicher, dass du die richtigen Sicherheitseinstellungen für Makros hast.

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