habe zwar das Forum durchsucht, finde jedoch keine wirklich passende, bzw. funktionierende Lösung für mein Problem und hoffe auf Eure Hilfe?
Zum Problem:
Ich habe eine Userform mit diversen Text- u. Kombiboxen und Alles funktioniert soweit fehlerfrei.
Wenn eine Textbox jedoch unbefüllt verlassen wird, wird im Exit Event per vbYesNo abgefragt, ob die Eingabe übersprungen werden soll.
Wird mit "JA" bestätigt, werden die nächsten zwei Eingabeboxen disabled, übersprungen und Box 4 fokussiert.
Das Ganze funktioniert zwar, meine Abfrage (MsgBox) erscheint jedoch immer zweimal hintereinander, wenn man "JA" klickt, bzw. Eingabetaste drückt.
Button "NEIN" funktioniert dagegen fehlerfrei.
Name der UserForm = "Auftrag"
Zur Erklärung, die Textfelder in der UserForm wurden wie folgt benannt, um die Übersicht nicht zu verlieren:
(Grund: bei Abschluss werden unzählige Abfragen durchgeführt, inkl. Datenbankeinträgen, Verzeichnisserstellung im Netzwerk, etc.)
TextBox1 = A_Name, TextBox2 = A_Vorname, TextBox3 = A_Abt
TextBox4 = B_Name, TextBox5 = B_Vorname, TextBox6 = B_Abt
.....
(UserForm läuft mit Option Explicit)
Mein aktueller Code für TextBox "A_Name" (TextBox1):
==========================================
Private Sub A_Name_AfterUpdate()
'Anfangsbuchstaben groß, auch bei Doppelnamen
Dim Name1, Name2 as String
With Auftrag
If A_Name Like "*" & " " & "*" Then
Name1 = Split(Me!A_Name, " ") (0)
Name2 = Split(Me!A_Name, " ") (1)
A_Name = UCase(Left(Name1, 1)) & LCase(Mid(Name1, 2)) & " " & UCase(Left(Name2, 1)) & LCase(Mid(Name2, 2))
Else
A_Name = UCase(Left(A_Name, 1)) & LCase(Mid(A_Name, 2))
End If
End with
End Sub
------------------------------------------
Private Sub A_Name_Change()
'Keine numerische Eingabe
With Auftrag
If IsNumeric(A_Name) Then
MsgBox "Nur Texteingabe zulässig!" & vbNewLine & "Bitte korrigieren Sie Ihre Eingabe.", vbOkOnly, "HINWEIS!"
A_Name = ""
A_Name.SetFocus
End If
End With
End Sub
---------------------------------------------------------------------------------------------
Private Sub A_Name_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Funktionen bei Verlassen der Textbox
With Auftrag
'1. Wenn Eingabe korrekt
If Len(A_Name.Text) >= 2 And Not IsNumeric(A_Name) Then
A_Vorname.SetFocus
Exit Sub
End If
'2. Wenn keine Eingabe erfolgt
If A_Name = "" Then
If MsgBox("Möchten Sie die Eingabe überspringen?", vbYesNo) = vbYes Then
A_Vorname.Enabled = False
A_Abt.Enabled = False
B_Name.SetFocus
Else
Cancel = True
End If
End If
End With
End Sub
--------------------------------------------------------------------------------------------------------Wäre um Eure professionelle Unterstützung wirklich froh, denn zweimal Bestätigen ist "bescheiden" und ich komm im Moment nicht drauf?
Vielen Dank im Voraus!