Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Textbox auf Anzahl der Zeichen prüfen
#1
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
Zitieren
#2
Hallo,

das Event, das du suchst, heißt ...

Code:
_BeforeUpdate()
Sabina
Zitieren
#3
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
Zitieren
#4
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....
Zitieren
#5
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
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste




Hinweis auf Angebot Excel-Inside - lang    Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden um dein Anliegen zu besprechen.
   Gerne erstellen wir auf dieser Basis ein Angebot.
   Sende deine Anfrage einfach
per E-Mail an anfrage@excel-inside.de


Powerd and supported by Excel-InsideSolutions