Excel VBA – Eigene Suchfunktion bauen – bestimmte Zeile finden

Dieser Beitrag ist ein Teil der VBA Grundlagen Serie.

In diesem Beitrag zeige ich Ihnen wie Sie über VBA bestimmte Zeilen eindeutig identifizieren können. Diese Funktionalität erlaubt es Ihnen eine Suchfunktion in Excel zu bauen.

111 VBA Makros die Ihr Leben leichter machen. Egal ob Sie Einsteiger oder fortgeschrittener Anwender sind – in diesem Buch finden Sie Lösungen für Ihre alltäglichen Aufgaben. Keine Vorkenntnisse notwendig.

Ich habe bereits eine Tabelle mit Kundennummern und Namen. Mithilfe von VBA wollen wir nun einen Namen zu der gesuchten Kundennummer (Zelle E1) finden. Das Ergebnis soll in der Zelle F1 erscheinen.
Bestimmte Zeilen über VBA finden
Für das Ergebnis benötigen wir eine Variable vom Typ Range.

Sub ZeileFinden()
Dim Ergebnis As Range

End Sub

Diese Variable wird über den folgenden Befehl gefüllt.

Set Ergebnis = Tabelle1.Columns(1).Find(what:=Tabelle1.Range("E1").Value, _
                lookat:=xlWhole)

Zunächst geben wir an in welcher Tabelle wir suchen wollen. Danach sagen wir in welchem Bereich die Suche stattfinden soll. Unsere Kundennummern stehen in der Spalte A, also in der ersten Spalte. Über den Befehl Find können Sie nach einem bestimmten Wert suchen. Der gesuchte Wert steht in Tabelle1, Zelle E1. Damit die Suche nur diese Nummer und keine ähnlichen Nummern findet, verwenden wir das Argument lookat:=xlWhole.
Falls der entsprechende Wert in der Spalte A gefunden wurde, so ist die Variable gefüllt. Diese Variable verfügt über bestimmte Koordinaten. Über Attribute .Row und .Column können wir die Zeile und die Spalte der Variable eindeutig bestimmen. Sie können es mit der Anweisung Debug.Print Ergebnis.Row testen. Die siebte Zeile wird im Direktbereich ausgegeben.
Nun können wir das Ergebnis auswerten. Wir wissen, dass der gesuchte Name in der zweiten Spalte der jeweiligen Zeile liegt.

If Ergebnis Is Nothing Then
MsgBox "Leider nichts gefunden"
Else
Tabelle1.Range("F1").Value = Tabelle1.Cells(Ergebnis.Row, 2).Value
End If

Unternehmensplanung mit SAP BPC

111 VBA Makros die Ihr Leben leichter machen

Wollen Sie Ihre langweiligen Routineaufgaben loswerden? Möchten Sie Excel an Ihre Bedürfnisse anpassen, Berechnungen automatisieren, eigene Dialogfelder erstellen und vieles mehr? Dieses Buch zeigt Ihnen, wie Sie Ihre Aufgaben schnell und einfach mit VBA erledigen.

Wenn die Variable nicht gefüllt werden könnte, wenn also nichts gefunden wurde, geben wir die entsprechende Meldung aus. Andernfalls wird der Name in die Zelle F1 geschrieben.
Um das Makro zu testen habe ich über Entwicklertools -> Einfügen einen Button hinzugefügt und diesem unser Makro zugewiesen.
Wie Sie sehen können funktioniert das Makro perfekt.
Ergebnis VBA Suche

Das komplette Makro:

Sub ZeileFinden()
Dim Ergebnis As Range

Set Ergebnis = Tabelle1.Columns(1).Find(what:=Tabelle1.Range("E1").Value, _
                lookat:=xlWhole)

If Ergebnis Is Nothing Then
MsgBox "Leider nichts gefunden"
Else
Tabelle1.Range("F1").Value = Tabelle1.Cells(Ergebnis.Row, 2).Value
End If

End Sub

Die Beispiel Excel Datei mit dem sofort einsetzbaren Makro und 111+ andere Makros, die Ihr Leben leichter machen, finden Sie hier.

Beeindrucke deinen Chef mit coolen Excel Tricks!

  • Lasse dich von deinen Kollegen nicht abhängen!
  • Spare Zeit und nutze diese für angenehmere Dinge
  • Steigere deine Produktivität und Effizienz
  • Es ist leicht - In meinem Newsletter gebe ich Schritt für Schritt Anleitungen die jeder versteht
  • Bei der Anmeldung zu meinem Newsletter erhälst du das Buch „Excel Tricks die deinen Chef beeindrucken“ als Willkommensgeschenk.
20 Excel Tricks

Jetzt anfordern!

* Pflichtfeld
 
Kein SPAM. 100% sicher.

Quellen und weiterführende Literatur:
Bernd Held – VBA mit Excel: Das umfassende Handbuch
Falls Ihnen dieser Beitrag weitergeholfen hat, wäre es eine sehr nette Anerkennung meiner Arbeit wenn Sie z.B. Ihre Bücher über Amazon bestellen würden. Wenn Sie ein Produkt kaufen, erhalte ich dafür eine Provision. Für Sie ändert sich am Preis des Produktes gar nichts. Ich möchte mich an dieser Stelle jetzt schon für Ihre Unterstützung bedanken.

3 Kommentare
  1. andy
    andy sagte:

    Hallo,

    Vielen Dank für das Script.

    Gibt es denn die Möglichkeit das Script so zuändern das es alle treffer anzeigt ?
    Wenn ja was muss man ändern damit dieses Script mir alle anzeigt. Und diese
    unter einander darstellt?

    Antworten
  2. Grit
    Grit sagte:

    Hallo,

    gibt es auch eine Möglichkeit nach 2 Kriterien zu suchen? Sprich suche nach der Kundenummer und den Namen und gib mir den Ort (der dann beispielsweise in Spalte C steht)??

    Antworten

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.