Name und Vorname in Sheet suchen und Zeilennummer in Variable schreiben

  • Excel

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Rigattoni.

    Name und Vorname in Sheet suchen und Zeilennummer in Variable schreiben

    Hallo Community,

    ich laufe hier gerade in ein Problem.
    Ich habe mittels selbst erstelltem Formular eine Mitgliederliste erstellt.
    Das passt auch so weit.

    Jetzt kann es passieren, dass im Laufe der Zeit Änderungen an den Mitgliederdaten erforderlich sind.
    Dafür wollte ich ein Abfrageformular bauen, in dem ich erst einmal nach dem Nachname und Vorname suche und dann die einzelnen Zellen der Zeile in das Formular einlese.
    Das Einlesen ist für mich nicht das Problem...

    Lediglich der erste Schritt, wie ich die entsprechende Zeile finde, da klemmt es gerade.

    Nachname steht in Spalte C:C
    Vorname steht in Spalte D:D

    Es gibt aber viele Nachnamen doppelt mit unterschiedlichen Vornamen.

    In jeweils einem Textfeld "VornameBox" und "NachnameBox" gebe ich die Vor- und Nachnamen ein und möchte dann über einen vorhandenen Button "SucheButton()" dann suchen.

    Könnt ihr mir da bitte helfen??? ;(

    Viele Grüße
    Der Rigattoni
    Willkommen im Forum.
    Der einfache Brute-Force-Weg: Gehe per Schleife von Zeile 1 bis zur letzten beschrifteten alle Zellen der Spalte C durch und schaue nach dem passenden Nachnamen. Wenn die Zelle daneben, also die mit dem aktuellem Zeilenindex, aber Spalte D den richtigen Vornamen enthält, dann bist Du wohl beim Richtigen. Viel Spaß bei "Thomas Meier" oder "Sabine Schmidt". Da wird's u.U. einige davon geben.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Lässt sich evtl. mit einer Mitgliedsnummer arbeiten? Die wäre eindeutiger als Vor- und Nachname.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Hallo zusammen,

    vielen Dank erst einmal für die Hinweise.
    Mit dem Brute Force komme ich immer nur bis zum ersten Nachnamen.

    (Ich muss mich oben korrigieren, Nachname und Vorname stehen in B:B und C:C)
    Es ist ein Kreuz...
    Mein derzeitiges Script (Ja, ist nicht auf meinem Mist gewachsen) findet den ersten Nachnamen in der Liste und vergleicht dann den Vornamen in der benachbarten Zelle.
    Findet es den Vornamen nicht, dann kommt eine MsgBox, dass der Name nicht gefunden wurde. Hier liegt wohl der Knackpunkt.
    Wie bekomme ich es hin, dass das Script nach dem finden des Nachnamen dann nicht da stehen bleibt und weiter sucht?

    Spoiler anzeigen

    Visual Basic-Quellcode

    1. Private Sub SucheButton_Click()
    2. Dim c As Range
    3. Dim firstAddress
    4. Dim str1
    5. Dim str2
    6. Dim Bereich As Range
    7. Dim start As Double
    8. str1 = NachnameBox
    9. str2 = VornameBox
    10. On Error Resume Next
    11. With Worksheets("Mitglieder").Range("B:B")
    12. Set c = .Find(str1, LookIn:=xlValues)
    13. If c.Offset(0, 1) = str2 Then Set Bereich = c
    14. If Not c Is Nothing Then
    15. firstAddress = c.Address
    16. Do
    17. Set c = .FindNext(c)
    18. If c.Offset(0, 1) = str2 Then Set Bereich = Union(c, Bereich)
    19. Loop While Not c Is Nothing And c.Address <> firstAddress
    20. End If
    21. End With
    22. If Bereich Is Nothing Then MsgBox "nichts gefunden"
    23. Bereich.Select
    24. End Sub


    Mitgliedsnummer geht leider auch nicht, weil bei der Aufnahme des neuen Mitgliedes noch keine Nummer da ist.
    Die kommt erst Wochen nachdem wir das Mitglied beim DSB gemeldet haben.
    Wir benutzen dieses Excel für die internen Verwaltungstätigkeiten. Die eigentliche Mitgliederverwaltung geht über ein Online-Portal des BSSB und das ist leider ganz übel und für unsere Interna unbrauchbar.
    Was noch dazu kommt ist, dass wir unter dem Jahr Einträge z.B. für geleisteten Arbeitsdienst, Änderungen der Adresse etc. nicht unbedingt die Mitgliedsnummer zur Hand haben und somit nach dem Namen suchen müssen. Ja, man könnte direkt im Sheet mit Filter arbeiten, aber meine Vorstandskollegen sind da nicht so Excel-affin... ;)
    Wir sind also gezwungen ein internes Tool zu nutzen, auf das der Vorstand und der Kassenwart Zugriff hat. Das Ganze ist auch noch PW geschützt, um der DSGVO gerecht zu werden.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Rigattoni“ ()

    Visual Basic-Quellcode

    1. Function SucheButton_Click()
    2. Dim c As Range
    3. Set c = MemberCell(NachnameBox.Text,VornameBox.Text)
    4. If c Is Nothing Then
    5. MsgBox "nichts gefunden" ' not found
    6. Else
    7. c.Select 'found
    8. End If
    9. End Function
    10. Function MemberCell(ByVal Name As String, ByVal Surname As String) As Range
    11. Dim SearchRange As Range, c As Range, FirstAddress As String
    12. Set SearchRange = Range("B:B")
    13. Set c = SearchRange.Find(Name, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
    14. If Not c Is Nothing Then
    15. FirstAddress = c.Address
    16. Do
    17. If c.Offset(0, 1) = Surname Then Exit Do
    18. Set c = SearchRange.FindNext(c)
    19. Loop Until c.Address = FirstAddress
    20. End If
    21. Set MemberCell = c
    22. End Function
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --