ich habe ein paar Basiskentnisse in VBA und benötige bitte eure Hilfe.
Bei meiner Tabelle werden über eine userform Mitglieder unseres Fitnessstudios eingetragen. Mein Code ermittelt die letzte Zeile oder die zu bearbeitende Zeile anhand des Nachnamens. Ist der Nachname vorhanden, wird der Eintrag bearbeitet. Ist er nicht vorhanden, wird am Ende der Tabelle ein neuer Eintrag erstellt. Das funktioniert soweit ganz gut. Sobald natürlich zwei Mitglieder den selben Nachnamen haben, aber unterschiedliche Vornamen, wird der bisherige Eintrag mit dem neuen Vornamen überschrieben.
Wie kann ich hier einen Abgleich von 3 Kriterien einbauen?
Ich möchte nur noch einen neuen Eintrag anlegen, wenn ComboBoxVorname, ComboBoxNachname, ComboBoxStudio nicht in dieser Konstellation vorhanden sind.
BSP:
Alex Maier aus Berlin wird nicht mehr von Alex Maier aus Düsseldorf überschrieben. Es sollten danach beide Einträge vorhanden sein
Ich freue mich auf euer Feedback :)
Private Sub UserForm_Activate()
If l = 0 Then GoTo Ende
ComboBoxVorname = cellS(l + 6, 4)
ComboBoxNachname = cellS(l + 6, 3)
ComboBoxStudio = cellS(l + 6, 5)
Ende:
End Sub
Private Sub btnCancel_Click()
l = 0
Unload Me
End Sub
Private Sub btnOk_click()
'Definieren der Comboboxen, Suche startet ab Zeile 7
Dim lZeile As Variant
Dim rgSearchV As Range
Dim rgSearchN As Range
Dim rgSearchS As Range
Set rgSearchV = Range("D7:D1006")
Set rgSearchN = Range("C7:C1006")
Set rgSearchS = Range("E7:E1006")
Dim ZelleV As Range
Dim ZelleN As Range
Dim ZelleS As Range
Set ZelleV = rgSearchV.Find(ComboBoxVorname.Value)
Set ZelleN = rgSearchN.Find(ComboBoxNachname.Value)
Set ZelleS = rgSearchS.Find(ComboBoxStudio.Value)
'ermitteln der nächsten freien Zeile
lZeile = Evaluate("=MATCH(TRUE,INDEX(C7:C1006="""",0,0),0)+6")
If IsNumeric(lZeile) Then
If l > 0 Then lZeile = l + 6 'Tabelle beginnt in Zeile 7
Else
MsgBox "Alle Zeilen belegt"
Exit Sub
End If
'Sicherheitsabfrage
If ComboBoxVorname.Value = "" Then
MsgBox "Bitte einen Vornamen eingeben!", _
vbExclamation
Exit Sub
Else
'Sicherheitsabfrage
If ComboBoxNachname.Value = "" Then
MsgBox "Bitte einen Nachnamen eingeben!", _
vbExclamation
Exit Sub
Else
'Sicherheitsabfrage
If ComboBoxStudio.Value = "" Then
MsgBox "Bitte ein Studio angeben!", _
vbExclamation
Exit Sub
Else
ActiveSheet.Unprotect
'Neuer Eintrag, falls Nachname nicht vorhanden
If ZelleN Is Nothing Then
'Werte auslesen und eintragen
cellS(lZeile, 4).Value = ComboBoxVorname
cellS(lZeile, 3).Value = ComboBoxNachname
cellS(lZeile, 5).Value = ComboBoxStudio
cellS(lZeile, 6) = Date
'Nachname vorhanden, Zeile bearbeiten
Else
lZeile = ZelleN.Row
'Ermitteln wie oft er uns diesen Monat schon besucht hat (Max 4x pro _
Monat möglich)
anzahl = Application.CountA(cellS(lZeile, 6).Resize(1, 4)) + 1
If anzahl
Private Sub UserForm_Initialize()
Overlay_Besucher_Eintrag.ComboBoxVorname.SetFocus
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then i = 0
End Sub