SetFocus wird nicht richtig ausgeführt

  • Sonstige

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von alchimist.

    SetFocus wird nicht richtig ausgeführt

    Hallo zusammen,
    ich möchte in der Routine Text1_AfterUpdate() den Focus auf die Textbox mit Namen Text1 setzen, wenn im Feld ein Punkt eingetragen wurde. Ich erhalte auch die Fehlermeldung, das ein Komma statt Punkt eingetragen werden soll, jedoch springt der Cursor weiter zum zweiten Textfeld statt den Focus auf Text1 zusetzen.
    Wie müssen die Eigenschaften von Text1 gesetzt werden, damit der Focus richtig gesetzt wird? Spielt Multiline eine Rolle?
    Gruß JoJo

    Private Sub UserForm_initialize()
    Call werte_vorbesetzen
    End Sub


    Private Sub werte_vorbesetzen()
    'Vorbesetzen der allgemeinen Parameter
    Text1 = Format(CDbl(ActiveWorkbook.Worksheets("Eingabe Strom").Range("N4") * 100), "0.0")
    TextBox2 = Format(CDbl(ActiveWorkbook.Worksheets("Eingabe Strom").Range("N5") * 100), "0.0")
    End Sub

    Private Sub Text1_AfterUpdate()
    If Text1.Text = "" Then
    Text1.Text = "0,0"
    ElseIf InStr(Text1.Text, ".") > 0 Then
    MsgBox "Bitte Eingabe mit Komma statt Punkt!"
    Text1.SetFocus
    End If
    End Sub

    Hallo JoJo,

    entweder so:

    Private Sub Text1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    If Text1.Text = "" Then
    Text1.Text = "0,0"
    ElseIf InStr(Text1.Text, ".") > 0 Then
    MsgBox "Bitte Eingabe mit Komma statt Punkt!"
    Cancel = True
    End If
    End Sub

    oder so:

    Private Sub Text1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    If Text1.Text = "" Then
    Text1.Text = "0,0"
    ElseIf InStr(Text1.Text, ".") > 0 Then
    Text1 = Val(Text1.Text)
    End If
    End Sub

    Warum den armen Anwender mit der MsgBox nerven, geht doch auch so.

    Das mit Val geht, weil Val bei der Zahlenumwandlung davon ausgeht, das angloamerikanische Format zu bekommen (mit Punkt), das wird dann in der lokale Format des Rechners umgewandelt, was bei den meisten Nutzern dieses Forums ein Komma als Trenner vorsieht.

    Gruß Markus