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

Forumthread: VBA: Find-Methode mit zwei Kriterien

VBA: Find-Methode mit zwei Kriterien
19.06.2019 16:36:14
Harry
Hallo,
ich möchte eine Tabelle in einer Listbox ausgeben, aber dabei sollen nur bestimmte Zeilen ausgegeben werden und zwar diejenigen die man vorher mithilfe von zwei Comboboxen auswählen kann.
Anbei finden ihr meinen Code :
Private Sub Suchen_Click()
Dim rngCell As Range
Dim strFirstAddress As String
With Worksheets("Inserate").Range("A:F")
Me.ListBox1.Clear
Set rngCell = .Find(Me.ComboBox1.Value, LookIn:=xlValues, lookat:=xlWhole)
strFirstAddress = ""
If Not rngCell Is Nothing Then
If ComboBox2.Value = rngCell.Offset(0, -3) Then
strFirstAddress = rngCell.Address
Do
With Me.ListBox1
.ColumnCount = 6
.AddItem
.List(.ListCount - 1, 0) = rngCell.Offset(0, -5).Value
.List(.ListCount - 1, 1) = rngCell.Offset(0, -4).Value
.List(.ListCount - 1, 2) = rngCell.Offset(0, -3).Value
.List(.ListCount - 1, 3) = rngCell.Offset(0, -2).Value
.List(.ListCount - 1, 4) = rngCell.Offset(0, 0).Value
.ColumnWidths = "2,5cm;1,5cm;2,5cm;2,5cm"
End With
Set rngCell = .FindNext(rngCell)
Loop While Not rngCell Is Nothing And rngCell.Address  strFirstAddress
End If
Else
MsgBox "es konnte kein Eintrag gefunden werden",
End If
End With
End Sub

Über schnelle Antwort würde ich mich sehr freuen.
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Find-Methode mit zwei Kriterien
19.06.2019 16:37:53
Hajo_Zi
benutze Autofilter und sehe die sichtbaren Zeilen ein.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
AW: VBA: Find-Methode mit zwei Kriterien
19.06.2019 16:44:25
Harry
Hey Hajo,
ich verstehe leider nicht genau was du meinst. Könntest du evtl. ein Beispiel mit Autofilter machen?
Anzeige
AW: VBA: Find-Methode mit zwei Kriterien
19.06.2019 16:46:24
Hajo_Zi
warum sollte ich das.
Du hälst es doch auch nicht für notwedig.
Was ist am Autofilter kompliziert?
benutze den makrorecorder.
Gruß Hajo
AW: VBA: Find-Methode mit zwei Kriterien
19.06.2019 16:47:48
Harry
Das war ja nur eine höfliche Bitte, aber trotzdem Danke für deine hilfreiche Aufmerksamkeit Hajo
Anzeige
AW: VBA: Find-Methode mit zwei Kriterien
19.06.2019 17:50:17
Daniel
Hi
da wären noch ein paar Informationen deinerseits erforderlich:
1. was ist überhaupt deine Frage?
2. funktioniert der gezeigte Code, wenn nein, was ist das Ergebnis dieses Codes und wie weicht es von deinen Wünschen ab?
3. beschreiben bitte genauer, was du erreichen willst, wie soll der gezeigte Inhalt von den beiden Comboboxen abängen? dürfen die Werte irgendwo stehen oder sollen sie in bestimmten Spalten stehen?
4. lade bitte eine Beispieldatei hoch, an der man das Problem nachvollziehen kann.
Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

VBA: Find-Methode mit zwei Kriterien in Excel


Schritt-für-Schritt-Anleitung

Um die Find-Methode in Excel VBA mit mehreren Kriterien zu verwenden, kannst du folgenden Code nutzen. Dieser Code sucht in einer Tabelle nach Werten, die in zwei Comboboxen ausgewählt wurden. Die Ergebnisse werden in einer Listbox angezeigt.

Private Sub Suchen_Click()
    Dim rngCell As Range
    Dim strFirstAddress As String
    With Worksheets("Inserate").Range("A:F")
        Me.ListBox1.Clear
        Set rngCell = .Find(Me.ComboBox1.Value, LookIn:=xlValues, lookat:=xlWhole)
        strFirstAddress = ""
        If Not rngCell Is Nothing Then
            If ComboBox2.Value = rngCell.Offset(0, -3) Then
                strFirstAddress = rngCell.Address
                Do
                    With Me.ListBox1
                        .ColumnCount = 6
                        .AddItem
                        .List(.ListCount - 1, 0) = rngCell.Offset(0, -5).Value
                        .List(.ListCount - 1, 1) = rngCell.Offset(0, -4).Value
                        .List(.ListCount - 1, 2) = rngCell.Offset(0, -3).Value
                        .List(.ListCount - 1, 3) = rngCell.Offset(0, -2).Value
                        .List(.ListCount - 1, 4) = rngCell.Offset(0, 0).Value
                        .ColumnWidths = "2,5cm;1,5cm;2,5cm;2,5cm"
                    End With
                    Set rngCell = .FindNext(rngCell)
                Loop While Not rngCell Is Nothing And rngCell.Address <> strFirstAddress
            End If
        Else
            MsgBox "Es konnte kein Eintrag gefunden werden."
        End If
    End With
End Sub

Häufige Fehler und Lösungen

  • Fehler: "Es konnte kein Eintrag gefunden werden."

    • Lösung: Stelle sicher, dass die Werte in den Comboboxen korrekt eingegeben sind und dass sie in den gewünschten Zellen vorhanden sind.
  • Fehler: Listbox bleibt leer.

    • Lösung: Überprüfe, ob die Spaltenindizes in den Offset-Methoden korrekt sind und ob die Listbox richtig konfiguriert ist.

Alternative Methoden

Eine alternative Methode zur Verwendung der Find-Methode ist die Verwendung des Autofilters. Hier kannst du die Daten in der Tabelle filtern, um die gewünschten Zeilen anzuzeigen:

  1. Wähle den Bereich aus, den du filtern möchtest.
  2. Gehe zu Daten -> Filter -> Autofilter.
  3. Setze die Filterkriterien für die gewünschten Spalten.

Diese Methode ist einfach und benötigt keinen VBA-Code, bietet aber nicht die Flexibilität der Find-Methode.


Praktische Beispiele

Stell dir vor, du hast eine Tabelle mit Inseraten in Excel. Du möchtest nur die Inserate anzeigen, die zu einem bestimmten Typ und Preis passen. Mit der oben genannten Find-Methode kannst du gezielt nach diesen Einträgen suchen und sie in einer Listbox anzeigen.

Ein Beispiel könnte sein:

  • ComboBox1: Inserattyp (z.B. "Auto")
  • ComboBox2: Preisbereich (z.B. "Unter 5000€")

Der VBA-Code filtert dann alle Inserate, die diesen Kriterien entsprechen.


Tipps für Profis

  • Verwende Error Handling: Implementiere Fehlerbehandlungsroutinen, um mögliche Laufzeitfehler abzufangen. Das erhöht die Stabilität deines Codes.

  • Optimiere die Suche: Wenn du häufig nach mehreren Kriterien suchst, überlege, ob du die Daten in eine Datenbank überführen kannst, um die Suche effizienter zu gestalten.

  • Nutze Named Ranges: Definiere benannte Bereiche für deine Suchkriterien, um den Code flexibler zu gestalten.


FAQ: Häufige Fragen

1. Wie kann ich die Find-Methode anpassen, um mehrere Ergebnisse anzuzeigen? Du kannst die FindNext-Methode in einer Schleife verwenden, um alle Treffer zu finden und sie in der Listbox anzuzeigen.

2. Ist dieser Code mit allen Excel-Versionen kompatibel? Der bereitgestellte VBA-Code sollte in den meisten modernen Excel-Versionen (Excel 2010 und höher) funktionieren. Achte jedoch darauf, dass die entsprechenden Objekte (wie ListBox und ComboBox) vorhanden sind.

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