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

Forumthread: Suchen mit VBA-Code

Suchen mit VBA-Code
07.06.2013 22:52:12
Marcus
Hallo,
Ich möchte Spalte A und B von oben nach unten nach einem bestimmten Inhalt durchsuchen.
Weiter bin ich bei meiner Recherche nicht gekommen:
sFind = InputBox("Bitte Suchbegriff eingeben:")
Wenn mir jemand beim Rest helfen könnte...
Danke
Gruß
Marcus

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suchen mit VBA-Code
08.06.2013 00:42:17
Mustafa
Hallo Marcus,
hier mal ein kleiner Code :

Option Explicit
Sub SuchenMitVBA()
Dim StrFind As String
Dim IntAnfangsZeile As Integer, IntEndZeile As Integer
Dim IntAnfangsSpalte As Integer, IntEndSpalte As Integer
Dim IntZeilenZähler As Integer, IntSpaltenZähler As Integer
Dim BlnGefunden As Boolean
StrFind = InputBox("Suchbegriff Eingeben", "Eingabe Suchbegriff")
IntAnfangsZeile = InputBox("Ab welcher Zeile soll gesucht werden?", "Startzeile")
IntEndZeile = InputBox("Bis zu welcher Zeile soll gesucht werden?", "Endzeile")
IntAnfangsSpalte = InputBox("Ab welcher Spalte soll gesucht werden?", "Startspalte als Zahl")
IntEndSpalte = InputBox("Bis zu welcher Spalte soll gesucht werden?", "Endspalte als Zahl")
For IntSpaltenZähler = IntAnfangsSpalte To IntEndSpalte
For IntZeilenZähler = IntAnfangsZeile To IntEndZeile
If Cells(IntZeilenZähler, IntSpaltenZähler) = StrFind Then BlnGefunden = True
If BlnGefunden Then GoTo Gefunden
Next
Next
Gefunden:
If Not BlnGefunden Then Exit Sub
MsgBox ("Suchbegriff gefunden in" & Chr(13) & "Zeile " & IntZeilenZähler & " Spalte " &  _
IntSpaltenZähler)
End Sub

Rückmeldung obs Hilft wäre nett.
Gruß aus der Domstadt Köln.

Anzeige
Suchen, weitersuchen, Adresse bei Fund augeben
08.06.2013 04:14:49
Matthias
Hallo Mustafa
Dir ist da ein kleiner Fehler unterlaufen.
Du musst zwingend nachbessern, denn wenn man z.B. 2x Abbrechen klickt
steigt VBA mit einem Fehler aus.
Es wird auch leider nur der erste Fund angezeigt.
Mich persönl. würden die vielen Abfragen aber auch eher stören.
Eine Alternative:
Dim Suchbegriff$
Suchbegriff = InputBox("bitte Suchbegriff eingeben", , "Test")
If StrPtr(Suchbegriff) = 0 Then Exit Sub
Cells.Find(What:=Suchbegriff, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlWhole).Activate
weiter:
Cells.FindNext(After:=ActiveCell).Activate
If MsgBox("Fund in " & ActiveCell.Address & vbLf & "weiter suchen?", vbYesNo, "Suche in allen Zellen") = vbYes Then GoTo weiter

Gruß Matthias

Anzeige
AW: Suchen, weitersuchen, Adresse bei Fund augeben
08.06.2013 08:13:54
Marcus
Hallo Matthias,
deine Variante gefällt mir wirklich besser, da es die Abfragen nicht gibt. Nur, hier scheint etwas nicht zu stimmen:
If StrPtr(Suchbegriff) = 0 Then Exit Sub
Wenn ich richtig deute, müsste, wenn kein Fund kommt, es in Exit gehen. Bei mir geht es aber trotzdem weiter und es dann kommt logischerweise eine Fehlermeldung. Kannst du noch mal gucken?
Gruß
Marcus

Anzeige
Fehler-Behandlung ...
08.06.2013 23:52:07
Matthias
Hallo
If StrPtr(Suchbegriff) = 0 fängt nur das "Abbrechen-Button" ab
Mit einer Fehlerbehandlung kannst Du dann auch den nicht gefundenen Wert abfangen.
Dim Suchbegriff$
On Error GoTo Fehler
Suchbegriff = InputBox("bitte Suchbegriff eingeben", , "Test")
If StrPtr(Suchbegriff) = 0 Then Exit Sub
Cells.Find(What:=Suchbegriff, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlWhole).Activate
weiter:
Cells.FindNext(After:=ActiveCell).Activate
If MsgBox("Fund in " & ActiveCell.Address & vbLf & "weiter suchen?", vbYesNo, "  Suche -> " &  _
Suchbegriff) = vbYes Then GoTo weiter
Exit Sub
Fehler:
MsgBox "Suchbegriff wurde nicht gefunden"
Guß Matthias

Anzeige
AW: Suchen, weitersuchen, Adresse bei Fund augeben
08.06.2013 08:39:41
Marcus
Hallo Matthias,
auch wenn es richtig laufen wird, bin ich trotzdem noch nicht ganz zufrieden.
Gibt es eine Möglichkeit per Makrobefehl nur das "Suchen-Fenster" zu öffnen? Ein Makro schreibt nur mit, wenn ich auch etwas bestimmtes suche, will ich aber noch nicht.
Der Nachteil dieser InputBox ist, dass ich die erst komplett abarbeiten muss, bevor ich auf dem Tabellenblatt etwas weiter schreiben kann.
Gruß Marcus

Anzeige
AW: Suchen, weitersuchen, Adresse bei Fund augeben
10.06.2013 23:00:53
Mustafa
Hallo Marcus,
der Code war nur als kleiner Denkanstoß gedacht um die Eigeninitiative zu steigern, wenn Matthias Code deine Wünsche erfüllt ist ja alles bestens.
PS: Matthias L.
mir ist bewusst das bei Abbruch der Code in einen Fehler ausläuft, aber wie oben schon angedeutet war er nur als Denkanstoß gedacht.
Auf Wunsch und eine genauere Erläuterung hätte ich den Code auch weitestgehendst angepasst und vereinfacht.
Aber Marcus scheint ja mit deiner Lösung zufrieden zu sein somit ist alles bestens :)
Gruß aus der Domstadt Köln.

Anzeige
alles ok ... :-) oT
11.06.2013 08:08:17
Matthias

AW: Suchen mit VBA-Code
08.06.2013 08:15:35
Marcus
Hallo Mustafa,
danke, aber ich habe mich für Matthias Variante entschieden. Die Abfragen möchte ich nicht.
Gruß Marcus
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Suchen mit VBA-Code in Excel


Schritt-für-Schritt-Anleitung

Um in Excel mit VBA zu suchen und Ergebnisse anzuzeigen, kannst Du den folgenden Code verwenden. Dieser VBA-Code ermöglicht es Dir, einen Suchbegriff einzugeben und die entsprechenden Zellen zu finden.

Option Explicit
Sub SuchenMitVBA()
    Dim StrFind As String
    Dim IntAnfangsZeile As Integer, IntEndZeile As Integer
    Dim IntAnfangsSpalte As Integer, IntEndSpalte As Integer
    Dim IntZeilenZähler As Integer, IntSpaltenZähler As Integer
    Dim BlnGefunden As Boolean

    StrFind = InputBox("Suchbegriff Eingeben", "Eingabe Suchbegriff")
    IntAnfangsZeile = InputBox("Ab welcher Zeile soll gesucht werden?", "Startzeile")
    IntEndZeile = InputBox("Bis zu welcher Zeile soll gesucht werden?", "Endzeile")
    IntAnfangsSpalte = InputBox("Ab welcher Spalte soll gesucht werden?", "Startspalte als Zahl")
    IntEndSpalte = InputBox("Bis zu welcher Spalte soll gesucht werden?", "Endspalte als Zahl")

    For IntSpaltenZähler = IntAnfangsSpalte To IntEndSpalte
        For IntZeilenZähler = IntAnfangsZeile To IntEndZeile
            If Cells(IntZeilenZähler, IntSpaltenZähler) = StrFind Then
                BlnGefunden = True
                GoTo Gefunden
            End If
        Next
    Next
Gefunden:
    If Not BlnGefunden Then Exit Sub
    MsgBox ("Suchbegriff gefunden in" & Chr(13) & "Zeile " & IntZeilenZähler & " Spalte " & IntSpaltenZähler)
End Sub

Dieser Code fragt den Benutzer nach einem Suchbegriff und den Zeilen- sowie Spaltenbereichen, in denen gesucht werden soll.


Häufige Fehler und Lösungen

  1. Fehler beim Abbrechen der Eingabe
    Wenn der Benutzer auf "Abbrechen" klickt, kann es zu einem Fehler kommen. Um dies zu verhindern, sollte eine Fehlerbehandlung implementiert werden.

    On Error GoTo Fehler
  2. Nur der erste Fund wird angezeigt
    Um alle Funde anzuzeigen, sollte eine Schleife verwendet werden, die nach jedem Fund fragt, ob weitergesucht werden soll.

    weiter:
    Cells.FindNext(After:=ActiveCell).Activate
    If MsgBox("Fund in " & ActiveCell.Address & vbLf & "weiter suchen?", vbYesNo, "Suche in allen Zellen") = vbYes Then GoTo weiter

Alternative Methoden

Eine einfache Möglichkeit, um in Excel VBA zu suchen und anzuzeigen, ist die Verwendung der Cells.Find-Methode. Hier ist ein Beispielcode:

Dim Suchbegriff$
Suchbegriff = InputBox("bitte Suchbegriff eingeben", , "Test")
If StrPtr(Suchbegriff) = 0 Then Exit Sub
Cells.Find(What:=Suchbegriff, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlWhole).Activate

Diese Methode ermöglicht es Dir, schnell einen Wert zu finden, ohne mehrere Abfragen.


Praktische Beispiele

Hier ist ein Beispiel für die Anwendung des Codes:

  1. Du hast eine Liste von Namen in Spalte A und möchtest den Namen "Max" finden.
  2. Führe das Makro aus und gib "Max" als Suchbegriff ein.
  3. Das Makro wird die Zelle anzeigen, in der "Max" gefunden wurde.

Wenn Du eine größere Datenmenge hast, kannst Du auch mit Cells.Find effizienter suchen.


Tipps für Profis

  • Verwende On Error Resume Next, um die Ausführung fortzusetzen, selbst wenn ein Fehler auftritt. Dies kann nützlich sein, wenn Du mit großen Datenmengen arbeitest.
  • Nutze Range.Find für komplexere Suchfunktionen, wie z.B. das Suchen nach Teilstrings oder das Ignorieren von Groß- und Kleinschreibung.
  • Kombiniere die Find-Methode mit Schleifen, um alle Vorkommen eines Suchbegriffes in einer großen Datenbank zu finden.

FAQ: Häufige Fragen

1. Wie kann ich die Suche nach Teilstrings durchführen?
Du kannst die LookAt-Eigenschaft auf xlPart setzen, um nach Teilstrings zu suchen.

2. Gibt es eine Möglichkeit, das Suchen-Fenster direkt zu öffnen?
Ja, Du kannst die Application.Dialogs(xlDialogFind).Show-Methode verwenden, um das Suchfenster anzuzeigen, ohne einen Suchbegriff vorab einzugeben.

Durch die Nutzung dieser Methoden kannst Du Excel VBA effektiver verwenden, um Daten zu suchen und anzuzeigen.

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