Hallo,
das hier:Do
i = 1
Set rZelle = ThisWorkbook.Worksheets("Daten").Cells(i, 1).Find(what:=sSuchbegriff, LookAt:=xlPart, LookIn:=xlValues)
macht wirklich keinen Sinn:
Du benutzt die Find()-Methode um in der Zelle(i,1) nach einem Begriff zu suchen.
Also entweder die Find-Methode benutzen, um in einer ganzen Spalte nach einem Nachnamen zu suchen, oder die einzelnen Zellinhalte in einer Schleife mit deinem Suchbegriff abgleichen (ohne Find()).
Wenn du die Find()-Methode verwenden möchtest, dann könnte das vielleicht ein Grundgerüst sein:
Private Sub Such_Click()
Dim i As Integer
Dim rZelle As Range
Dim rZelle2 As Range
Dim sSuchbegriff As String
Dim sSuchbegriff2 As String
Dim strAdr As String
If Trim$(TextBox1.Value) <> "" Then
sSuchbegriff = Trim$(TextBox1.Value)
Else
MsgBox "Sie müssen einen Suchbegiff eingeben - danke.", _
48, " Hinweis für " & Application.UserName
Exit Sub
End If
If Trim$(TextBox2.Value) <> "" Then
sSuchbegriff2 = Trim$(TextBox2.Value)
Else
MsgBox "Sie müssen einen Suchbegiff eingeben - danke.", _
48, " Hinweis für " & Application.UserName
Exit Sub
End If
'Nachname in Spalte A suchen:
Set rZelle = ThisWorkbook.Worksheets("Daten").Range("A:A").Find(what:=sSuchbegriff, LookAt:=xlPart, LookIn:=xlValues)
If Not rZelle Is Nothing Then 'Wenn Nachname gefunden wurde
strAdr = rZelle.Address 'erste Fundstelle merken
'Solange weiter nach Nachnamen suchen, bis Vorname in Nachbarzelle enthalten ist
Do While InStr(rZelle.Offset(0, 1).Value, sSuchbegriff2) = 0 'Solange Vorname nicht übereinstimmt
Set rZelle = ThisWorkbook.Worksheets("Daten").Range("A:A").Find(what:=sSuchbegriff, LookAt:=xlPart, _
LookIn:=xlValues, after:=rZelle)
If strAdr = rZelle.Address Then Exit Do 'Schleife verlassen wenn erneut erste Fundstelle gefunden
Loop
If InStr(rZelle.Offset(0.1).Value, sSuchbegriff2) > 0 Then
'Vorname und Nachname stimmen überein
Else
'nur Nachname stimmt überein
End If
Else
'Nachname konnte nicht gefunden werden
MsgBox "Der Begriff """ & sSuchbegriff & """ wurde nicht gefunden.", _
48, " Hinweis für " & Application.UserName
End If
End Sub
Kommst du klar?
Grüße, Ulrich