Code:
Private Sub Pg2txtSollkonto_AfterUpdate()
If Len(Pg2txtSollkonto) <> 4 Then
MsgBox "Die Kontobezeichnung besteht aus 4 Zahlen!", vbOKOnly Or vbExclamation, "Bitte Eingabe überprüfen"
With Pg2txtSollkonto
.SetFocus
.SelStart = 0
.SelLength = Len(Pg2txtSollkonto)
End With
End If
End Sub
Guten Morgen allerseits, nach dem Verlassen einer Textbox per Tab-Taste soll die Anhzahl der Zeichen auf 4 geprüft werden. Falls die Bedingung nicht erfüllt ist wird der Text markiert.
Leider springt bei obigem Code der Cursor nach dem Verlassen der Textbox per Tab-Taste in die nächste Textbox ohne den Text zu markieren. Wo ist der Fehler?
Danke
Stefan
Hallo,
das Event, das du suchst, heißt ...
Sabina
Hallo Sabina, das klingt gut.... passt aber trotzdem nicht.
Code:
Private Sub Pg2txtSollkonto_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If Len(Pg2txtSollkonto) <> 4 Then
MsgBox "Die Kontobezeichnung besteht aus 4 Zahlen!", vbOKOnly Or vbExclamation, "Bitte Eingabe überprüfen"
With Pg2txtSollkonto
.SetFocus
.SelStart = 0
.SelLength = Len(Pg2txtSollkonto)
End With
End If
End Sub
Der Cursor springt trozdem in die nächste Textbox und der Text wird auch nicht markiert.
Laut MS-Hilfe:
Zitat:Wenn Sie das Abbrechen-Argument auf True festlegen, bleibt der Fokus auf dem Steuerelement, und weder das AfterUpdate-Ereignis noch das Exit-Ereignis tritt ein.
Evtl. ist das die Ursache? Wie wird Cancel auf True gesetzt? Cancel = True? An welcher Stellle im Code?
Danke
Stefan
Hm, die Msg-Box ist das Problem.
Cancel = True und die Msg-Box deaktiviert: dann läuft der Code so wie er sollte. Vielleicht fällt mir noch eine Lösung eine wie es mit Msg-Box funzt....
Moin!
Ich würde das Exit-Event nehmen:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With TextBox1
If Len(.Text) <> 4 Then
MsgBox "Die Kontobezeichnung besteht aus 4 Zahlen!" & vbNewLine & _
.Text & " besteht aus " & Len(.Text) & " Zeichen!"
Cancel = True
.SelStart = 0
.SelLength = Len(.Text)
End If
End With
End Sub
Gruß Ralf