Registriert seit: 30.04.2019
Version(en): 365
Hallo liebe Leute,
ich versuche mich nun auch an VBA und habe gleich eine schwierige Frage.
Bei meinem Projekt gebe ich in Spalte "A" den Vornamen und in Spalte "B" den Nachnamen ein. Die Eingabe erfolgt über das (?) Userform und soll später noch erweitert werden.
Ich möchte nun, dass der Name + dazugehörenden Vornamen nicht doppelt in der Tabelle aufgenommen werden kann. Die entsprechende Person soll nur einmal in der Tabelle eingetragen werden .
Es kann zwar
Max und
Moritz Mustermann geben aber keine zwei
Martina's Mustermann ...
Nun habe ich diverse Foren, Hilfen, Videotutorials durchgeschaut und werde immer ahnungsloser und ratloser.
Kann mir da jemand von Euch helfen ? Die TestMappe habe ich mit hochgeladen:
Mappe1.xlsm (Größe: 23,55 KB / Downloads: 2)
Vielen Dank für Eure Mühen mit mir. :20:
BazzSor
Registriert seit: 05.09.2017
Version(en): 2013
Hallo,
so:
Code:
Private Sub Command_Übernahme_Click()
Dim last As Long, raFund As Range
last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
If TextBox_Vorname.Value = "" Then
MsgBox "Bitte Vornamen eingeben", vbExclamation, "Achtung!"
TextBox_Vorname.SetFocus
ElseIf Right(TextBox_Vorname.Text, 1) = Chr(32) Then
MsgBox "Keine Leerzeichen erlaubt", vbCritical, "Wichtig!"
TextBox_Vorname.SetFocus
ElseIf TextBox_Nachname.Value = "" Then
MsgBox "Bitte Nachnamen eingeben", vbExclamation, "Achtung!"
TextBox_Nachname.SetFocus
ElseIf Right(TextBox_Nachname.Text, 1) = Chr(32) Then
MsgBox "Keine Leerzeichen erlaubt", vbCritical, "Wichtig!"
TextBox_Nachname.SetFocus
Else
Set raFund = Columns(1).Find(what:=Me.TextBox_Vorname, LookIn:=xlValues, lookat:=xlWhole)
If Not raFund Is Nothing Then
If raFund.Offset(, 1) = Me.TextBox_Nachname Then
MsgBox "Nicht zulässig, " & Me.TextBox_Vorname & " " & Me.TextBox_Nachname _
& " ist bereits vorhanden."
Me.TextBox_Nachname = ""
Me.TextBox_Vorname = ""
Me.TextBox_Vorname.SetFocus
Set raFund = Nothing
Exit Sub
End If
End If
ActiveSheet.Cells(last, 1).Value = TextBox_Vorname.Value
ActiveSheet.Cells(last, 2).Value = TextBox_Nachname.Value
Unload UserForm1
End If
Set raFund = Nothing
Gruß Werner
Folgende(r) 1 Nutzer sagt Danke an Werner.M für diesen Beitrag:1 Nutzer sagt Danke an Werner.M für diesen Beitrag 28
• BazzSor
Registriert seit: 30.04.2019
Version(en): 365
06.05.2019, 18:04
(Dieser Beitrag wurde zuletzt bearbeitet: 06.05.2019, 18:09 von BazzSor.)
ahhh, danke Dir.
Das heisst es wird erst nach dem Vornamen gesucht und dann erst nach dem Nachnamen.
Über ".find" bin ich schon gestolpert, ".offset" ist mir (hust) noch unbekannt.
Werde mir das jetzt Schritt für Schritt anschauen und lernen.
Danke :19:
Registriert seit: 05.09.2017
Version(en): 2013
Hallo,
mit Offset gibst du einen Zeilenversatz an.
Den Versatz kannst du angeben für die Zeile und die Spalte.
Der erste Zahlenwert in der Klammer gibt den Zeilenversatz an, der zweite Wert den Spaltenversatz.
Positive Werte bei Zeile = Versatz nach unten, negative Werte = Versatz nach oben
Positive Werte bei Spalte = Versatz nach rechts, negative Werte = Versatz nach links
raFund.Offset(1, 0) = ausgehend von der Fundzelle eine Zeile unterhalb
raFund.Offset(-1, 0) = ausgehend von der Fundzelle eine Zeile oberhalb
raFund.Offset(0, 1) = ausgehend von der Fundzelle eine Spalte rechts
raFund.Offset(0, -1) = ausgehend von der Fundzelle eine Spalte nach links
Das lässt sich natürlich auch kombinieren:
raFund.Offset(1, 1) = ausgehend von der Fundzelle eine Zeile unterhalb und eine Spalte nach rechts
Gruß Werner