Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1404to1408
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Userform Hilfe

Userform Hilfe
07.02.2015 17:17:10
Thomas
Hallo,
ich möchte gern meine Beispiel Userform etwas ändern. Wenn man auf den Button " Datensatz neu speichern" drückt wird erbarmungslos ein neuer Kunde erzeugt. Ich möchte aber gern das nur ein neuer Kunde erzeugt wird wenn es diesen Kunden (Name und Vorname ) noch nicht gibt und wenn mindestens der Nachname im Textfeld eingetragen ist.
Kann mir jemand von euch helfen? Ich habe schon alles versucht. Alles scheitert.
https://www.herber.de/bbs/user/95615.xls
Liebe Grüße
Thomas

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
zu 1.
07.02.2015 18:06:57
Tino
Hallo,
prüfe zuvor ob alle Felder gefüllt sind.
Beispiel:
Private Sub CommandButton3_Click()
Dim letzte_Zeile As Long
Dim i%
For i = 1 To 8
If Me("TextBox" & i) = "" Or ComboBox1.Text = "" Then
MsgBox "Alle Felder ausfüllen!"
Exit Sub
End If
Next i
'...
Gruß Tino

Hallo Tino
07.02.2015 19:17:43
Thomas
Hallo,
super das passt schon mal. besten Dank.
weist du auch noch eine Lösung dafür das kein datensatz doppelt vorkommen kann?
Liebe grüsse
Thomas

könnte so gehen...
08.02.2015 08:49:29
Tino
Hallo,
versuch es mal so.
Private Sub CommandButton3_Click()
Dim letzte_Zeile As Long
Dim i%
For i = 1 To 8
If Me("TextBox" & i) = "" Or ComboBox1.Text = "" Then
MsgBox "Alle Felder ausfüllen!"
Exit Sub
End If
Next i
If FindEintrag Then
MsgBox "Der Name '" & ComboBox1.Value & " " & TextBox1 & "'ist schon vorhanden!"
Exit Sub
End If
With Worksheets("Daten")
' Datensatz neu speichern
letzte_Zeile = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(letzte_Zeile, 1) = Application.WorksheetFunction.Max(.Columns(1)) + 1
.Cells(letzte_Zeile, 2) = TextBox1.Text
.Cells(letzte_Zeile, 3) = ComboBox1.Text
.Cells(letzte_Zeile, 4) = TextBox2
.Cells(letzte_Zeile, 5) = TextBox3.Text
.Cells(letzte_Zeile, 6) = TextBox4.Text
.Cells(letzte_Zeile, 7) = TextBox5.Text
.Cells(letzte_Zeile, 8) = TextBox6.Text
.Cells(letzte_Zeile, 9) = TextBox7.Text
.Cells(letzte_Zeile, 10) = TextBox8.Text
End With
ClearAll
UserForm_Initialize
ComboBox1.SetFocus
End Sub
Function FindEintrag() As Boolean
Dim rng As Range, sErste$
Set rng = Columns(3).Find(What:=ComboBox1.Value, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If rng Is Nothing Then Exit Function
If Cells(rng.Row, 2).Value = TextBox1 Then
FindEintrag = True
Exit Function
End If
sErste = rng.Address
Set rng = Columns(3).FindNext(rng)
Do While sErste  rng.Address
If Cells(rng.Row, 2).Value = TextBox1 Then
FindEintrag = True
Exit Function
End If
Set rng = Columns(3).FindNext(rng)
Loop
End Function
Gruß Tino

Anzeige
AW: könnte so gehen...
08.02.2015 19:39:09
Thomas
Hallo Tino,
besten dank für deine Mühe das klappt super. Wie muss ich deine Idee ändern wenn ich die Kombination Name und PLZ(PLZ = Textfeld3) zusätzlich zur jetzigen Prüfung mit aufnehmen möchte.
Habe schon einiges probiert aber es klappt nicht. Ich bekomme es zwar geschrieben jedoch nicht geprüft.
Liebe grüsse
Thomas

AW: könnte so gehen...
08.02.2015 19:58:53
Tino
Hallo,
versuch es so und ersetze die Funktion durch diesen Code.
Function FindEintrag() As Boolean
Dim rng As Range, sErste$
Set rng = Columns(3).Find(What:=ComboBox1.Value, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If rng Is Nothing Then Exit Function
If Cells(rng.Row, 2).Value = TextBox1 Then
If Cells(rng.Row, 5).Text = TextBox3 Then
FindEintrag = True
Exit Function
End If
End If
sErste = rng.Address
Set rng = Columns(3).FindNext(rng)
Do While sErste  rng.Address
If Cells(rng.Row, 2).Value = TextBox1 Then
If Cells(rng.Row, 5).Text = TextBox3 Then
FindEintrag = True
Exit Function
End If
End If
Set rng = Columns(3).FindNext(rng)
Loop
End Function

Gruß Tino

Anzeige
Tino einfach Klasse
08.02.2015 21:42:08
Thomas
Super
ich bedanke mich bei Dir es funktioniert klasse.
Ich hatte Datensalat weil ich die Daten nicht eindeutig hatte.
Danke schön und ein ruhigen rest Sonntag abend.
Liebe Grüße Thomas

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige