Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Suchen und anzeigen mit VBA

Suchen und anzeigen mit VBA
27.11.2004 15:12:21
Dietmar
Hallo Freunde
Ich habe ein Problem !
Ich habe ein Tabellenblatt mit Inhalten in den Spalten A bis R, in den Zellen von A2 bis R500 !!
Ich möchte jetzt mit VBA und einer Dialogbox folgendes machen :
Einen Suchbegriff eingeben und alle Daten die zu diesem Suchbegriff passen ( sind alle in den Zeilen z.b. A2,B2,C2 usw anzeigen lassen !
Falls der Suchbegriff nicht vorhanden ist, sollte eine Nachricht erscheinen : Nicht vorhanden !
So etwas kann man zwar auch mit dem Excel-Menüpunkt "Maske" machen, das jedoch
möchte ich nicht ! Es sollte mit VBA bewerkstelligt werden !
Kann mir da jemand detailliert helfen, ich habe keine Ahnung von VBA !
Gruß
Dietmar
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suchen und anzeigen mit VBA
27.11.2004 15:17:48
Josef
Hallo Dietmar!
Was soll Angezeigt werden?
Die Fundstellen, die ganze Zeile, bestimmte Spalten in der Zeile?
Gruß Sepp
AW: Suchen und anzeigen mit VBA
28.11.2004 11:58:11
Dietmar
Hallo Sepp
Vielen Dank für deine Anfrage. Komme leider erst jetzt zu antworten.
Also :
Ich hätte gerne, dass die Inhalte aller Zellen die links bzw. rechts vom Suchbegriff
liegen angezeigt werden.
Das bedeutet : Ist der Suchbegriff gefunden worden z.b. in Zelle c2, sollte der Inhalt der
zellen A2 und B2 sowie D2 bis R2 angezeigt werden. Falls der Suchbegriff z.b. in Telle R2
gefunden wurde, sollen die Zellen A2 bis Q2 angezeigt werden.
Ich hoffe ich habe genau erklärt was ich möchte und hoffe du kommst damit zurecht.
Vielleicht kennst due die Lösung !
mfg
Dietmar
Anzeige
AW: Suchen und anzeigen mit VBA
28.11.2004 12:44:29
Josef
Hallo Dietmar!
Da die Ausgabe ja doch sehr umfangreich sein kann, würde ich das
auf einem eigenen Tabellenblatt machen!
Erstelle eine neue Tabelle mit dem Namen "Suche".
Füge im Oberen Bereich der Tabelle einen Commnadbutton ein und weise ihm
diesen Code zu.

Private Sub CommandButton1_Click()
Dim wks As Worksheet, wksS As Worksheet
Dim rng As Range
Dim sFirst As String, sFind As String
Dim lRow As Long
lRow = 5 'Zeile ab der die gefundenen zeilen angezeigt werden
Set wks = Sheets("Tabelle1") 'Tabelle in der gesucht wird - anpassen
Set wksS = Sheets("Suche") 'Tabelle für die Ausgabe - anpassen
sFind = wksS.[A1] 'Suchbegriff
wksS.Range("A5:R505").ClearContents 'Zellen löschen
Set rng = wks.Range("A2:R500").Find(sFind, wks.Range("R500"), xlValues, xlWhole)
If Not rng Is Nothing Then
sFirst = rng.Address
wks.Range(wks.Cells(rng.Row, 1), wks.Cells(rng.Row, 18)).Copy _
wksS.Range(wksS.Cells(lRow, 1), wksS.Cells(lRow, 18))
lRow = lRow + 1
Do
Set rng = wks.Range("A2:R500").FindNext(rng)
If rng.Address = sFirst Then Exit Do
wks.Range(wks.Cells(rng.Row, 1), wks.Cells(rng.Row, 18)).Copy wksS(Cells(lRow, 1))
lRow = lRow + 1
Loop
Else
MsgBox "Kein Treffer"
End If
End Sub

Den Suchbegriff gibst du dann in Zelle "A1" ein und die Ergebnisse werden ab
Zeile 5 aufgelistet.
Gruß Sepp
Anzeige
AW: Suchen und anzeigen mit VBA
28.11.2004 12:59:47
Dietmar
Hallo Sepp
Danke für deine schnelle Antwort. Funktioniert einwandfrei. Ohne dir natürliche lästig fallen zu wollen, aber kann ich die Resultate nicht in einem Formular übertragen lassen.
Ich meine so wie bei der Excel-Maske. Dann hätte ich alles schön übersichtlich auf einem
Blick untereinander. Ich hoffe du verstehst was ich meine.
Kurzum :
ich hätte gerne ein Formular. Da gebe ich in einer Box den Suchbegriff ein und in anderen Boxen auf dem Formularblatt erscheinen die Resultate !!
Klingt kompliziert aber ich weiß es nicht anders auszudrücken.
mfg
Dietmar
Anzeige
AW: Suchen und anzeigen mit VBA
28.11.2004 16:25:35
Josef
Hallo Dietmar!
https://www.herber.de/bbs/user/14049.xls
Datei öffnen, deine Datei ebenfalls öffnen, in den
VBA - Editor wechseln und die Userform einfach mit DragAndDrop
in deine mappe kopieren.
Gruß Sepp
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Suchen und Anzeigen von Daten mit VBA in Excel


Schritt-für-Schritt-Anleitung

Um mit VBA in Excel einen Suchbegriff einzugeben und die entsprechenden Daten anzuzeigen, folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Erstelle ein neues Modul: Rechtsklicke im Projektfenster auf „VBAProject (DeineDatei)“ und wähle „Einfügen“ > „Modul“.

  3. Füge den folgenden Code ein:

    Private Sub CommandButton1_Click()
       Dim wks As Worksheet, wksS As Worksheet
       Dim rng As Range
       Dim sFirst As String, sFind As String
       Dim lRow As Long
       lRow = 5 'Zeile ab der die gefundenen Zeilen angezeigt werden
       Set wks = Sheets("Tabelle1")  'Tabelle in der gesucht wird - anpassen
       Set wksS = Sheets("Suche")     'Tabelle für die Ausgabe - anpassen
       sFind = wksS.[A1] 'Suchbegriff
       wksS.Range("A5:R505").ClearContents 'Zellen löschen
       Set rng = wks.Range("A2:R500").Find(sFind, wks.Range("R500"), xlValues, xlWhole)
    
       If Not rng Is Nothing Then
           sFirst = rng.Address
           wks.Range(wks.Cells(rng.Row, 1), wks.Cells(rng.Row, 18)).Copy _
           wksS.Range(wksS.Cells(lRow, 1), wksS.Cells(lRow, 18))
           lRow = lRow + 1
           Do
               Set rng = wks.Range("A2:R500").FindNext(rng)
               If rng.Address = sFirst Then Exit Do
               wks.Range(wks.Cells(rng.Row, 1), wks.Cells(rng.Row, 18)).Copy wksS.Cells(lRow, 1)
               lRow = lRow + 1
           Loop
       Else
           MsgBox "Kein Treffer"
       End If
    End Sub
  4. Füge einen CommandButton hinzu: Wechsle zu deinem „Suche“-Tabellenblatt, füge einen CommandButton über „Entwicklertools“ > „Einfügen“ > „Button“ hinzu und verlinke ihn mit dem Code.

  5. Gib den Suchbegriff in Zelle A1 ein und klicke auf den Button, um die Ergebnisse ab Zeile 5 anzuzeigen.


Häufige Fehler und Lösungen

  • Fehler: „Kein Treffer“ erscheint, obwohl der Suchbegriff existiert.

    • Lösung: Stelle sicher, dass der Suchbegriff exakt eingegeben wurde. Die Find-Funktion ist case-sensitive, also überprüfe die Groß- und Kleinschreibung.
  • Fehler: Daten werden nicht angezeigt.

    • Lösung: Prüfe, ob die Daten im richtigen Bereich (A2:R500) liegen und dass das Arbeitsblatt korrekt benannt ist.

Alternative Methoden

Eine Alternative zur VBA-Methode ist die Verwendung von Excel-Funktionen. Du kannst die FILTER-Funktion verwenden (verfügbar in Excel 365), um Daten basierend auf einem Suchkriterium zu filtern. Hier ist ein einfaches Beispiel:

=FILTER(A2:R500, A2:A500="Suchbegriff")

Diese Formel gibt alle Zeilen zurück, in denen der Suchbegriff in Spalte A gefunden wird.


Praktische Beispiele

Wenn du beispielsweise nach einem bestimmten Produkt in einer Liste von Verkaufsdaten suchst, kannst du den oben genannten VBA-Code verwenden, um alle relevanten Verkaufsdaten anzuzeigen.

  1. Suchbegriff: „Produkt123“
  2. Ergebnisse: Alle Zeilen, die „Produkt123“ enthalten, werden in der Tabelle „Suche“ angezeigt.

Tipps für Profis

  • Verwende Fehlerbehandlung: Implementiere On Error Resume Next, um den Code robuster zu gestalten.
  • Optimiere die Suche: Nutze die Find-Methode effizient, indem du die Suchparameter anpasst (z.B. xlPart für Teilsuchen).
  • Erstelle ein benutzerdefiniertes Formular: Du kannst eine UserForm erstellen, um die Eingabe und Anzeige der Ergebnisse zu verbessern. Verwende UserForm.Show, um die Form anzuzeigen.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen Find und FindNext in VBA?
Find sucht das erste Vorkommen eines Werts, während FindNext das nächste Vorkommen basierend auf dem letzten Suchergebnis findet.

2. Kann ich mehrere Suchbegriffe gleichzeitig verwenden?
Ja, du kannst die If-Bedingung anpassen, um mehrere Suchbegriffe zu berücksichtigen, indem du Or zwischen den Bedingungen verwendest.

3. Welche Excel-Version benötige ich für diese VBA-Funktion?
Die beschriebenen Schritte funktionieren in Excel 2010 und höher, da VBA in diesen Versionen unterstützt wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige