Abfrage Name Vorname

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
TextBox MsgBox
Bild

Betrifft: Abfrage Name Vorname
von: Werner
Geschrieben am: 09.11.2015 08:16:25

Hallo Zusammen,
ich habe in einer Tabelle in Spalte E Namen Stehen und in der Spalte F die Vornamen.
Über eine User Form lasse ich Daten in diese Tabelle schreiben. Das die Namen nicht 2 mal eingetragen werden können, frage ich ab ob die Namen schon eingetragen wurden.
In der Spalte F möchte ich die Vornamen dazu abfragen. So wie ich das mache funktioniert das nicht, da wird nicht der dazugehörige Vorname abgefragt sondern geprüft ob der Vorname schon mal in der Spalte enthalten ist.
Wie muss der Code geändert werden , dass der zugehörige Vorname abgefragt wird.
'Abfrage ob der Name in der E und der Vorname in Spalte F schon enthalten ist, wenn ja Abbruch
If WorksheetFunction.CountIfs(Sheets("Eingaben").Columns(5), cboName) Then
If WorksheetFunction.CountIfs(Sheets("Eingaben").Columns(6), txtVorname) Then
MsgBox ("Name steht schon in der Liste," & vbCrLf & vbCrLf & "kann nicht 2 mal eigegeben werden!!!")
GoTo Sprung2
End If
End If
Gruß Werner

Bild

Betrifft: AW: mit find und findnext
von: hary
Geschrieben am: 09.11.2015 08:50:43
Moin
Dazu brauchst du find. Der Nachname koennte auch Doppelt sein.
Probier mal(ungetestet).

Dim c As Object
 Dim firstAddress As String
 With Worksheets("Eingaben").Columns(5)
  Set c = .Find(cboName, LookIn:=xlValues)
  If Not c Is Nothing Then
   firstAddress = c.Address
   Do
     If c.Offset(0, 1) = txtVorname Then
      MsgBox "doppelt"
      Exit Sub
     End If
    Set c = .FindNext(c)
    If c.Address = firstAddress Then Exit Sub
   Loop While Not c Is Nothing
  End If
 End With

gruss hary

Bild

Betrifft: AW: mit find und findnext
von: Werner
Geschrieben am: 09.11.2015 10:23:03
Hallo Hary,
ich schicke mal den kompletten Code.
Wenn ich da diene Änderung reinkopiere wird keine Eintragung gemacht.

Private Sub cmdEintragen_Click()
If cboName.text = "" Then
    MsgBox ("Bitte den Namen auswählen oder eintragen!!!")
    GoTo Sprung
End If
'=================================================================================
'Abfrage ob der Name in der E und der Vorname in Spalte F schon enthalten ist, wenn ja abbruch
If WorksheetFunction.CountIfs(Sheets("Eingaben").Columns(5), cboName) Then
    If WorksheetFunction.CountIfs(Sheets("Eingaben").Columns(6), txtVorname) Then
    MsgBox ("Name steht schon in der Liste," & vbCrLf & vbCrLf & "kann nicht 2 mal eigegeben  _
werden!!!")
        GoTo Sprung2
    End If
'End If
If cboName.text = "" Then
    MsgBox ("Bitte den Namen auswählen!!!")
    GoTo Sprung
End If
'=================================================================================
'If txtVorname.Text = "" Then
If (Me.txtVorname = "" Or (Me.txtVorname) = "Vorname") Then
    MsgBox ("Bitte die Vornamen eintragen!!!")
    GoTo Sprung
End If
'=================================================================================
'If cboParkplatz.Text = "" Then
If (Me.cboParkplatz = "" Or (Me.cboParkplatz) = "Parkplatz") Then
    MsgBox ("Bitte den Parkplatz auswählen!!!")
    GoTo Sprung
End If
'=================================================================================
'If cboAbteilung.Text = "" Then
If (Me.cboAbteilung = "" Or (Me.cboAbteilung) = "Abteilung") Then
    MsgBox ("Bitte die Abteilung auswählen!!!")
    GoTo Sprung
End If
'=================================================================================
ActiveSheet.Unprotect Password:="Eisenach32" 'Passwort aufheben
txtAusfahrt = "" 'Textbox Ausfahrt bei Einfahrt löschen
Dim ZEingabe As Range 'Deklaration einer Variablen
'Zeiger auf Zelle A2 auf dem Blatt Eingabe setzen
Set ZEingabe = Sheets("Eingaben").[A2]
While ZEingabe <> "" 'Prüft ob Zelle leer
    'wenn Zelle A3 belegt eine Zelle nach unten
    Set ZEingabe = ZEingabe.Offset(1, 0)
Wend
'wert aus txtDatum (Datum) in erste leere Zelle der Spalte A schreiben
ZEingabe = Me.txtDatum
'wert 1 Zelle nach rechts aus txtUhrzeit (Uhrzeit) schreiben
ZEingabe.Offset(0, 1) = Me.txtEinfahrt
'wert 2 Zelle nach rechts aus txtUhrzeit (Uhrzeit) schreiben
ZEingabe.Offset(0, 2) = Me.txtAusfahrt
'wert 3 Zelle nach rechts aus cboKennzeichen (Kennzeichen) schreiben
ZEingabe.Offset(0, 3) = Me.cboFirma
'wert 4 Zellen nach rechts aus cboName (Name) schreiben
ZEingabe.Offset(0, 4) = Me.cboName
'wert 5 Zellen nach rechts aus txtVorname (Vorname) schreiben
ZEingabe.Offset(0, 5) = Me.txtVorname
'wert 7 Zellen nach rechts aus cboParkplatz (Parkplatz) schreiben
ZEingabe.Offset(0, 7) = Me.cboParkplatz
'wert 8 Zellen nach rechts aus cboAbteilung (Abteilung) schreiben
ZEingabe.Offset(0, 8) = Me.cboAbteilung
'wert 10 Zellen nach rechts aus txtPersonen (Personen) schreiben
ZEingabe.Offset(0, 10) = Me.txtPersonen
'wert 11 Zellen nach rechts aus chkBrilleAusg (Brille ausgegeben) schreiben
ZEingabe.Offset(0, 14) = "Einfahrgenehmigung"
ActiveSheet.Protect Password:="Eisenach32" 'Passwort aufheben
Unload frmAbteilungsleiterEinf
ActiveWorkbook.Save
Sprung:
Sprung2:
End Sub
Gruß Werner

Bild

Betrifft: AW: mit find und findnext
von: hary
Geschrieben am: 09.11.2015 10:52:21
Moin
Dein Code kann noch eingekuerzt/vereinfacht werden.
Habe aber nicht die Zeit/Lust das Form. nachzubauen.
Bsp.-mappe waere hilfreich.
Ist das aktive Blatt "Eingaben" ??

Dim c As Object
Dim firstAddress As String
 With Worksheets("Eingaben").Columns(5)
  Set c = .Find("hallo", LookIn:=xlValues)
  If Not c Is Nothing Then
          firstAddress = c.Address
      Do
        If c.Offset(0, 1) = "aber" Then
         MsgBox "doppelt"
         Exit Sub
        End If
       Set c = .FindNext(c)
       If c.Address = firstAddress Then Exit Sub
      Loop While Not c Is Nothing
   Else 'wenn Name nicht vorhanden dann eintragen in naechste freie
    ' hier Code zum eintragen
  End If
 End With

gruss hary

Bild

Betrifft: AW: Abfrage Name Vorname
von: Daniel
Geschrieben am: 09.11.2015 10:32:19
Hi
du musst die Prüfung so schreiben, in ein ZählenWenns:
das überprüft dann ob innerhalb eine Zeile Name UND Vorname mit den Eigaben übereinstimmen.

If Worksheetfunction.Countifs(Sheets("Eingaben").Columns(5), cboName, Sheets("Eingaben"). _
Columns(6), txtVorname) then
    Msgbox "..."
    Goto Sprung2
End If
Gruß Daniel

Bild

Betrifft: AW: Abfrage Name Vorname
von: Werner
Geschrieben am: 09.11.2015 10:38:59
Hallo Daniel,
danke für die schnelle Hilfe, so funktioniert es.
Gruß Werner

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Abfrage Name Vorname"