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

Forumthread: VBA nach Namen suchen

VBA nach Namen suchen
26.08.2013 21:03:22
Dani
Hallo zusammen
Unter dem folgenden Link habe ich schon mal nach einer Formel gesucht, welche die Namen in einem Sheet anhand der ersten 3 Buchstaben sucht.
https://www.herber.de/forum/archiv/1316to1320/t1318819.htm#1318819
Nun hätte ich jedoch folgenden Wunsch:
In Zelle B9 wird ein Name eingegeben und mit dem Suchen Button sollen nun alle Treffer aus dem Sheet DB ab Zelle B11 aufgelistet werden. Am liebsten ohne Leerzeilen.
Wie muss der Code hinter dem Suchen Button aussehen?
Hier mal eine Beispieldatei
https://www.herber.de/bbs/user/87038.xls
Danke schon mal für eure Hilfe
Gruess Dani

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA nach Namen suchen
27.08.2013 15:30:13
grassshopper
Moin,
probier mal dies hier:
Private Sub but_Suchen_Click()
Dim suchwort As String
Dim zielSpalte, zielZeile, suchZeile, letzteGefundeneZeile As Integer
Dim suche As Boolean
Dim sheetSuche, sheetDB As Worksheet
Set sheetDB = ThisWorkbook.Sheets("DB")
Set sheetSuche = ThisWorkbook.Sheets("Suche")
suchwort = sheetSuche.Range("B9").Value
zielZeile = 11 'erste Zielzeile (B11)
zielSpalte = 2 'Spalte B
sheetDB.Select
sheetDB.Columns("C:C").Select
suche = Selection.Find(What:=suchwort, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
suchZeile = Application.ActiveCell.Row
letzteGefundeneZeile = 0 'erneutes Suchen vom Anfang verhindern
While suche = True And suchZeile > letzteGefundeneZeile
sheetSuche.Select
sheetSuche.Cells(zielZeile, zielSpalte).Value = sheetDB.Cells(suchZeile, 3).Value & " " &  _
sheetDB.Cells(suchZeile, 4).Value
zielZeile = zielZeile + 1
sheetDB.Select
letzteGefundeneZeile = suchZeile
Selection.FindNext(After:=ActiveCell).Activate
suchZeile = Application.ActiveCell.Row
Wend
sheetSuche.Select
MsgBox "Suche abgeschlossen", vbOKOnly, "Fertig"
End Sub

Gruß,
grassshopper

Anzeige
AW: VBA nach Namen suchen
27.08.2013 17:48:45
Dani
Hallo Grashopper
Super! Funzt perfekt. Genau das was ich suchte.
Vielen Dank für deine Mühe
Gruess Dani
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA zur Suche nach Namen in Excel nutzen


Schritt-für-Schritt-Anleitung

Um in Excel nach Namen zu suchen und die Ergebnisse anzuzeigen, kannst Du den folgenden VBA-Code verwenden. Dieser Code ermöglicht es Dir, einen Namen in Zelle B9 einzugeben und alle Treffer aus dem Sheet "DB" ab Zelle B11 aufzulisten.

  1. Öffne Deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu, indem Du mit der rechten Maustaste auf "VBAProject" klickst -> "Einfügen" -> "Modul".
  3. Kopiere den folgenden Code und füge ihn in das Modul ein:
Private Sub but_Suchen_Click()
    Dim suchwort As String
    Dim zielSpalte, zielZeile, suchZeile, letzteGefundeneZeile As Integer
    Dim suche As Boolean
    Dim sheetSuche, sheetDB As Worksheet

    Set sheetDB = ThisWorkbook.Sheets("DB")
    Set sheetSuche = ThisWorkbook.Sheets("Suche")

    suchwort = sheetSuche.Range("B9").Value
    zielZeile = 11 'erste Zielzeile (B11)
    zielSpalte = 2 'Spalte B

    sheetDB.Select
    sheetDB.Columns("C:C").Select

    suche = Selection.Find(What:=suchwort, After:=ActiveCell, LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False).Activate

    suchZeile = Application.ActiveCell.Row
    letzteGefundeneZeile = 0 'erneutes Suchen vom Anfang verhindern

    While suche = True And suchZeile > letzteGefundeneZeile
        sheetSuche.Select
        sheetSuche.Cells(zielZeile, zielSpalte).Value = sheetDB.Cells(suchZeile, 3).Value & " " & _
        sheetDB.Cells(suchZeile, 4).Value
        zielZeile = zielZeile + 1
        sheetDB.Select
        letzteGefundeneZeile = suchZeile
        Selection.FindNext(After:=ActiveCell).Activate
        suchZeile = Application.ActiveCell.Row
    Wend

    sheetSuche.Select
    MsgBox "Suche abgeschlossen", vbOKOnly, "Fertig"
End Sub
  1. Schließe den VBA-Editor und gehe zurück zu Deinem Arbeitsblatt.
  2. Füge einen Button hinzu, um die Suche zu starten, und verlinke ihn mit der but_Suchen_Click-Prozedur.

Häufige Fehler und Lösungen

  • Fehler: "Objekt nicht gefunden"

    • Überprüfe, ob die Sheet-Namen ("DB" und "Suche") korrekt sind.
  • Fehler: Keine Ergebnisse gefunden

    • Stelle sicher, dass der eingegebene Name in der richtigen Spalte und im richtigen Format vorliegt.
  • Fehler: Leerzeilen in den Ergebnissen

    • Der Code ist so konzipiert, dass er nur Ergebnisse ohne Leerzeilen anzeigt. Überprüfe die Zeilen im "DB"-Sheet.

Alternative Methoden

Wenn Du keinen VBA-Code verwenden möchtest, kannst Du auch die folgenden Excel-Funktionen ausprobieren:

  • FILTER-Funktion (Excel 365)

    =FILTER(DB!C:C, ISNUMBER(SEARCH(B9, DB!C:C)), "Keine Treffer")
  • SVERWEIS-Funktion Verwende SVERWEIS, um nach Namen in einer bestimmten Tabelle zu suchen, aber beachte, dass dies nur für exakte Übereinstimmungen funktioniert.


Praktische Beispiele

Angenommen, Du hast eine Tabelle mit Namen in Spalte C und dazugehörigen Nachnamen in Spalte D. Der VBA-Code sucht nach dem Namen, der in Zelle B9 eingegeben wurde, und listet die Ergebnisse ab Zelle B11 auf.

Wenn Du nach "Max" suchst, zeigt der Code in Zelle B11 alle Einträge, die "Max" enthalten, wie "Max Müller" oder "Maximilian Schmidt".


Tipps für Profis

  • Nutze die xlWhole-Option in der Find-Methode, wenn Du eine exakte Übereinstimmung wünschst.
  • Du kannst den Code erweitern, um auch nach Nachnamen zu suchen, indem Du die Spalten anpasst.
  • Experimentiere mit verschiedenen Suchkriterien, um die Suche nach Namen in Excel zu optimieren.

FAQ: Häufige Fragen

1. Wie kann ich den Code anpassen, um nach Nachnamen zu suchen? Um nach Nachnamen zu suchen, ändere einfach die Spalte in der Find-Methode, die nach dem Nachnamen durchsucht wird.

2. Funktioniert dieser Code in allen Excel-Versionen? Der VBA-Code funktioniert in Excel 2007 und später. Stelle sicher, dass Du Makros aktiviert hast.

3. Was mache ich, wenn ich keine Berechtigung habe, VBA zu verwenden? Du kannst auch Excel-Formeln oder Filter verwenden, um in der Tabelle nach Namen zu suchen.

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