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

Forumthread: weitersuchen mit FindNext

weitersuchen mit FindNext
nico
Hallo habe folgendes problem an dem ich mir die zähne ausbeiße
ich habe eine userform als suchfunktion die auch soweit funktioniert. da in den tabellen aber die suche durchaus mehrere treffer erzielen kann benötige ich die funktion weitersuchen
für eure hilfe wäre ich dankbar da ich nicht weiß wo ich ansetzen soll
hier der code der suchfunktion
Private Sub CommandButton1_Click()
On Error GoTo errhdlr
Dim i As Integer
i = Sheets("Kostenauflistung").Cells.Find(TextBox1).Row
If TextBox1  "" Then
Label1 = Sheets("Kostenauflistung").Cells(i, 1)
Label2 = Sheets("Kostenauflistung").Cells(i, 1).Offset(0, 1)
Label3 = Sheets("Kostenauflistung").Cells(i, 1).Offset(0, 2)
Label8 = Sheets("Kostenauflistung").Cells(i, 1).Offset(0, 3)
Else
MsgBox "Keine Eingabe erfolgt..." & Chr(10) & "Bitte prüfen..."
End If
Exit Sub
errhdlr:
MsgBox "nichts gefunden..."
End Sub

besten dank für eure mühe im vorraus
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: weitersuchen mit FindNext
08.03.2010 21:16:29
Hajo_Zi
Hallo Nico,
Sub Find_mehrmals()
'* H. Ziplies                                    *
'* 24.11.08                                      *
'* erstellt von HajoZiplies@WEB.de              *
'* http://Hajo-Excel.de
Dim RaFound As Range
Dim FirstAddress As String
Dim Search As String
Dim LoLetzte As Long
Dim LoI As Long
Dim ByMldg As Byte
Search = Worksheets("Tabelle2").Range("A1")
With Worksheets("Tabelle1")
LoLetzte = IIf(IsEmpty(.Range("A65536")), .Range("A65536").End(xlUp).Row, 65536)
'   von Peter Haserodt
Set RaFound = .Range("A1:A" & LoLetzte).Find(Search, .Range("A" & LoLetzte), ,  _
xlWhole, , xlNext)
If RaFound Is Nothing Then Exit Sub  'falls nicht gefunden wird sub verlassen
If MsgBox("Gefunden in Zelle " & RaFound.Address(0, 0) & " ist dies richt richtige  _
Zelle !!!" _
, vbYesNo + vbQuestion, "Abfrage") = 6 Then
RaFound.Interior.ColorIndex = 3
Else
FirstAddress = RaFound.Address
Do
Set RaFound = .Range("A1:A" & LoLetzte).FindNext(RaFound)
If RaFound.Address = FirstAddress Then Exit Sub
If MsgBox("Gefunden in Zelle " & RaFound.Address(0, 0) & " ist dies richt  _
richtige Zelle !!!" _
, vbYesNo + vbQuestion, "Abfrage") = 6 Then
RaFound.Interior.ColorIndex = 3
Exit Do
End If
If RaFound.Row = LoLetzte Then Exit Do
LoI = LoI + 1
Loop
End If
End With
Set RaFound = Nothing
End Sub

Anzeige
AW: weitersuchen mit FindNext
09.03.2010 12:57:27
nico
Hallo
Besten dank für eure mühe aber es ist nicht genau das was ich suche. ich bräuchte nen 2 ten commandButten mit dem ich die funktion weitersuchen auslöse oder durch nochmaligen betätigen des commandbutten1 weitersuche. und da ich neuling im vba bin weiß ich nur das es mit findNext funktionieren soll aber ich habe keine ahnung wo ich in meiner funktion ansetzen soll. (leider)
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Weitersuchen mit FindNext in Excel VBA


Schritt-für-Schritt-Anleitung

Um die Funktion FindNext in deinem Excel VBA-Projekt zu implementieren, befolge diese Schritte:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf dein Projekt im Projekt-Explorer und wähle "Einfügen" > "Modul".

  3. Erstelle die Suchfunktion: Kopiere den folgenden Code in dein Modul:

    Sub Weitersuchen()
       Dim RaFound As Range
       Dim FirstAddress As String
       Dim Search As String
       Dim LoLetzte As Long
    
       Search = InputBox("Bitte Suchbegriff eingeben:")
       With Sheets("Kostenauflistung")
           LoLetzte = .Cells(.Rows.Count, "A").End(xlUp).Row
           Set RaFound = .Range("A1:A" & LoLetzte).Find(Search, LookIn:=xlValues)
    
           If Not RaFound Is Nothing Then
               FirstAddress = RaFound.Address
               Do
                   MsgBox "Gefunden in Zelle: " & RaFound.Address
                   Set RaFound = .Range("A1:A" & LoLetzte).FindNext(RaFound)
               Loop While Not RaFound Is Nothing And RaFound.Address <> FirstAddress
           Else
               MsgBox "Kein Treffer gefunden."
           End If
       End With
    End Sub
  4. Füge einen Button hinzu: Gehe zurück zu deinem Arbeitsblatt, füge einen Button (ActiveX-Steuerelement) hinzu und verlinke die Weitersuchen-Subroutine mit dem Button.

  5. Teste die Funktion: Klicke auf den Button und gib einen Suchbegriff ein, um die FindNext-Funktion zu testen.


Häufige Fehler und Lösungen

  • Fehler: "Nichts gefunden..."
    Lösung: Stelle sicher, dass der Suchbegriff vorhanden ist und die richtige Tabelle ausgewählt wurde.

  • Fehler: Laufzeitfehler 91
    Lösung: Dieser Fehler tritt auf, wenn die Find-Methode kein Ergebnis liefert. Überprüfe den Suchbereich und den Suchbegriff.


Alternative Methoden

  • Verwendung von FindNext in Kombination mit Find: Du kannst FindNext zusammen mit der Find-Methode nutzen, um alle Vorkommen eines Suchbegriffs durchzublättern.

  • Schleifen mit For Each: Statt FindNext könntest du auch eine Schleife verwenden, um jedes Element in einem Bereich zu durchlaufen und nach Übereinstimmungen zu suchen.


Praktische Beispiele

Hier ist ein Beispiel, wie du die FindNext-Funktion in einer Userform integrieren kannst:

Private Sub CommandButton1_Click()
    Dim RaFound As Range
    Dim FirstAddress As String
    Dim Search As String
    Search = TextBox1.Text

    If Search <> "" Then
        Set RaFound = Sheets("Kostenauflistung").Range("A:A").Find(Search)
        If Not RaFound Is Nothing Then
            FirstAddress = RaFound.Address
            Do
                ' Hier kannst du die Labels aktualisieren oder eine andere Aktion durchführen
                Label1.Caption = RaFound.Value
                Set RaFound = Sheets("Kostenauflistung").Range("A:A").FindNext(RaFound)
            Loop While Not RaFound Is Nothing And RaFound.Address <> FirstAddress
        Else
            MsgBox "Kein Treffer gefunden."
        End If
    Else
        MsgBox "Bitte Suchbegriff eingeben."
    End If
End Sub

Tipps für Profis

  • Optimierung der Suchleistung: Reduziere den Suchbereich, indem du nur den relevanten Bereich durchsucht, anstatt die gesamte Spalte.

  • Fehlerbehandlung: Implementiere eine robuste Fehlerbehandlung, um Laufzeitfehler zu vermeiden, insbesondere wenn du mit Find und FindNext arbeitest.

  • Suchoptionen anpassen: Nutze die Parameter der Find-Methode, um die Suche zu optimieren, z.B. LookIn, LookAt und SearchOrder.


FAQ: Häufige Fragen

1. Kann ich FindNext auch in anderen Excel-Versionen verwenden?
Ja, FindNext ist in den meisten Versionen von Excel VBA verfügbar, einschließlich Excel 2010, 2013, 2016 und 2019.

2. Wie kann ich die Suche nach Groß- und Kleinschreibung steuern?
Du kannst den Parameter MatchCase in der Find-Methode verwenden, um die Suche nach Groß- und Kleinschreibung zu steuern.

3. Was passiert, wenn der Suchbegriff leer ist?
Wenn der Suchbegriff leer ist, sollte eine entsprechende Fehlermeldung angezeigt werden, um den Benutzer zur Eingabe aufzufordern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige