Zunächst erst einmal vielen Dank an die fleißigen Helfer hier im Forum.
Nach vielen Stunden suchen und lesen im Forum habe ich jetzt mein erstes UserForm fertig. Mit einer Einschränkung.
Ich hoffe, Ihr könnt mir helfen und evtl. auch noch ein paar Verbesserungsvorschläge einbringen. Vielen Dank schon einmal.
Also mein Problem. Das Userform hat 13 Textfelder.
Fülle ich die Felder 8 und 9 nicht aus und gehe auch mit dem Tab oder der Mouse nicht dort rein, kommt die Meldung "Ort und PLZ müssen ausgefüllt sein".
Ist alles *richtig* ausgefüllt, werden die Werte der Textfelder in das Tabellenblatt in die nächste freie Zeile übernommen.
Das Userform wird geleert, für den nächsten Eintrag.
Leider kommt dann auch sofort die Meldung "PLZ und Ort müssen ausgefüllt sein". Diese Meldung muss bestätigt werden.
Weshalb kommt diese Meldung? Wie oder wo muss ich folgenden Code anordnen, daß die Meldung sofort nach erfolgten "Eintrag" und leeren der Felder *nicht* mehr erscheint?
Komisccher Weise erscheint nur die Meldung "Ort" nicht die ueber die "Postleitzahl"
' ----- Die 2 Textboxen (8 und 9) muessen Werte enthalten Anfang -----
' auch wenn sie unten auf die "richtigen" Werte geprueft werden soll an dieser Stelle
' sichergestellt werden, das bei Klick auf "Eintragen" auch Werte in den Boxen stehen
If TextBox8.Value = "" Or TextBox9.Value = "" Then
MsgBox "Bitte PLZ und Ort ausfuellen!"
Exit Sub
'dieses Teil verlassen, ohne Userform zu schliessen.
' ----- Textboxen muessen Werte enthalten Ende -----
Gleich noch eine Frage. Wie kann ich prüfen lassen, ob eine gültige E-Mail Adresse in Feld13 eingegeben wurde?
Hier nun mein UserForm.
Sicherlich sind noch viele andere Verbesserungen möglich?
Mit freundliche Grüßen
Gabi
Private Sub CommandButton1_Click()
' ----- Der "Eintragebuttom" Anfang -----
' ----- Die 2 Textboxen (8 und 9) muessen Werte enthalten Anfang -----
' auch wenn sie unten auf die "richtigen" Werte geprueft werden soll an dieser Stelle
' sichergestellt werden, das bei Klick auf "Eintragen" auch Werte in den Boxen stehen
If TextBox8.Value = "" Or TextBox9.Value = "" Then
MsgBox "Bitte PLZ und Ort ausfuellen!"
Exit Sub
'dieses Teil verlassen, ohne Userform zu schliessen.
' ----- Textboxen muessen Werte enthalten Ende -----
End If
'UserForm1.Hide
'------ Ueernahme der Werte aus den Textboxen in die Exceltabelle -----
z = Range("A1").End(xlDown).Row + 1
If z > 65000 Then z = 2
Cells(z, 1) = TextBox1
Cells(z, 2) = TextBox2
Cells(z, 3) = TextBox3
Cells(z, 4) = TextBox4
Cells(z, 5) = TextBox5
Cells(z, 6) = TextBox6
Cells(z, 7) = TextBox7
Cells(z, 8) = TextBox8
Cells(z, 9) = TextBox9
Cells(z, 10) = TextBox10
Cells(z, 11) = TextBox11
Cells(z, 12) = TextBox12
Cells(z, 13) = TextBox13
' ----- Textbox1 bis Textbox 13 leeren nach dem Uebertragen -----
' nun sollen alle Textfelder geleert werden
' Es erfolgt beim "Eintragen" jedoch noch eine laetige Meldung, das Ort und Postleitzahl keine Werte enthalten :( :( :(
Dim Tb As Integer
On Error Resume Next
For Tb = 1 To 13
Me.Controls("TextBox" & Tb) = ""
Next Tb
End Sub
' ----- Der "Eintragebuttom" Ende -----
Private Sub Label7_Click()
End Sub
Private Sub TextBox1_Change()
End Sub
Private Sub TextBox13_Change()
Dim I As Integer
Dim At As Integer
Dim Punkt As Integer
For I = 1 To Len(Cells(1, 1))
'MsgBox Mid(Cells(1, 1), I, 1)
If Mid(Cells(1, 1), I, 1) = "@" Then
At = At + 1
Punkt = 0
End If
If Mid(Cells(1, 1), I, 1) = "." Then Punkt = Punkt + 1
Next I
If At <> 1 Then MsgBox "Fehler"
If Punkt < 1 Then MsgBox "Fehler"
End Sub
' es muss eine "richtige" PLZ eingetragen werden, in Textfeld 8 bevor das Feld verlassen wird
Private Sub TextBox8_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim Wert As Variant
Wert = TextBox8.Value
If Not (Wert >= 1000 And Wert <= 99999 And Len(Wert) >= 4 And Len(Wert) <= 5) Then
MsgBox "Fehlerhafte Eingabe! Bitte PLZ eingeben, Danke!", vbInformation
TextBox8.SetFocus
TextBox8.SelStart = 0
TextBox8.SelLength = Len(TextBox8.Value)
Cancel = True
Else
TextBox8.Value = Format(Int(Wert), "00000")
End If
End Sub
' Im Textfeld "Ort" (Textfeld 9) muss etwas stehen, vor Verlassen des Feldes
Private Sub TextBox9_Change()
If UserForm1.TextBox9.Value = "" Then
MsgBox "Bitte einen Eintrag machen! Der Ort muss angegeben sein!", vbOKOnly, "Pflichteingaben"
Exit Sub
End If
End Sub