Textfelder in UF - 2 Fragen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Textfelder in UF - 2 Fragen von: Markus
Geschrieben am: 15.02.2005 09:54:46

Hallo,

ich habe in einer UF einige Textfelder. Nun möchte ich das in einem Textfeld nur eine 10 stellige Zahl eingetragen werden kann. Zum Thema Zahlen eingabe habe ich folgenden Code genutzt:

Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
        Case Asc("0") To Asc("9")
        Case Asc(","), Asc(".")
            If InStr(TextBox2, ".") <> 0 Then
                KeyAscii = 0
            Else
                KeyAscii = Asc(".")
            End If
        Case Asc(vbBack)
        Case Asc("-")
            If Len(TextBox1) = 0 Then
                If InStr(TextBox2, "-") <> 0 Then
                Else
                    KeyAscii = Asc("-")
                End If
            Else
                KeyAscii = 0
            End If
        Case Else
            KeyAscii = 0
    End Select
End Sub


Zur Längenbegraenzung habe ich bei dem Druck auf einen Button folgenden If Code genutzt. Doch klappt es nicht, auch wenn ich eine 10 stellige Zahl eingebe bekomme ich die MsgBox angezeigt. Was hab ich falsch gemacht?

If TextBox2.TextLength <> 10 Then
MsgBox ("Please fill in a valid customer number")
Exit Sub
End If

Die zweite Frage dazu ist, wie kann ich eine Prozedur beenden ohne das die nächste Textbox aktiviert wird? Ich habe diesen Code genutzt um auf eine 10 stellige Eingabe zu bestehen, das klappt auch, aber wenn ich die MsgBox bestätige, dann springt er zur nächsten Textbox, doch er soll in dieser bleiben bis die Eingabe richtig ist.

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Length <> 10 Then
MsgBox ("Number to long or to short")
End If
End Sub


Danke im Voraus für Eure Hilfe!!
Markus
Bild


Betrifft: AW: Textfelder in UF - 2 Fragen von: Roland Hochhäuser
Geschrieben am: 16.02.2005 22:34:51

Hallo Markus,

zur 1.Frage: der Code ist ok: dann sind es eben wirklich keine 10 Stellen
zur 2.Frage: etwa folgendes Strickmuster:

Option Explicit

Dim bolClose As Boolean

Private Sub TextBox2_AfterUpdate()
If bolClose Then Exit Sub
If TextBox2.TextLength <> 10 Then MsgBox "Fehler"
End Sub

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox2.TextLength <> 10 Then
    TextBox2 = ""
    Cancel = True
End If
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
bolClose = True
End Sub

Diese Konstruktion verhindert, dass beim Schließen der UF die MessageBox noch mal erscheint.
Feedback wäre nett :-)
Gruß Roland


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Textfelder in UF - 2 Fragen"