AW: VBA Nachnamen suchen bleibt beim ersten Treffer stehen
26.05.2024 20:04:25
Piet
Hallo
probier es bitte mal mit der Find Methode, die kann man beliebig wiederholen lassen.
Unten mal 3 verschiedene Versionen, wie man es mit Do Loop bei Find Methode auflisten kann.
mfg Piet
Public Sub EingabeSuchenNeu(Blatt As Worksheet, StartZeile As Integer, StartSpalte As Integer, Suchwort As MSForms.TextBox, Treffer As MSForms.ComboBox)
'Variablen definieren
Dim rFind As Range, Adr1 As String
Dim Eingabe As String, Vorname As String
'Nach Eingaben suchen
'______________________
'Das zugehörige Tabellenblatt aktivieren
' ThisWorkbook.Worksheets("Datenbank").Activate
Blatt.Activate
'ComboBox zu Beginn leeren
Treffer.Clear
'Start beginnt ab Zeile 12, sonst bitte auf 1 ändern!
Set rFind = Columns(StartZeile).Find(What:=Suchwort, After:=Cells(12, StartZeile), _
LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:= _
xlNext, MatchCase:=False)
If Not rFind Is Nothing Then
Adr1 = rFind.Address
Do '** 2 Varianten - mit und ohne Vornamen!!
'Nur Fam.namen auflisten
Treffer.AddItem rFind.Value: n = n + 1
'Fam.Namen mit Vorname auflisten
Treffer.AddItem rFind.Value & " " & rFind.Offset(0, 1): n = n + 1
Set rFind = Columns(StartZeile).FindNext(rFind)
Loop Until rFind.Address = Adr1
End If
'Erster Eingabe aller Suchergebnisse in der ComboBox_Treffer anzeigen
If Treffer.ListCount > 0 Then
Treffer.ListIndex = 0
End If
If n > 0 Then MsgBox m & " Treffer"
End Sub
'Variante 2 mit Vorname
Do
If rFind.Offset(0, 1) = Vorname Then _
Treffer.AddItem rFind.Value: n = n + 1
Set rFind = Columns(StartZeile).FindNext(rFind)
Loop Until rFind.Address = Adr1
'Variante 3 mit Vorname
Dim Txt As String 'Text für Msgbox Ausgabe
Do
Txt = Txt & rFind.Value & " " & rFind.Offset(0, 1) & vbLf
Loop Until rFind.Address = Adr1
MsgBox Txt 'direkte MsgBox Ausgabe
End Sub