Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

min./max. Werte aus Textbox richtig einlesen

Betrifft: min./max. Werte aus Textbox richtig einlesen von: Thorsten
Geschrieben am: 14.09.2014 12:07:54

Hallo,
habe ein Problem und weiß nicht mehr weiter, alles seltsam :-)
Ich habe 3 Textboxen, Textbox 1, Textbox2, Textbox3, das ganze wird in einer Userform
ausgeführt.
In Textbox 2 wird der Min. Wert 6,5 und in Textbox3 der Max Wert 8,5 eingetragen.
Wenn ich nun in meine Textbox1 einen Wert zwischen 6,5 und 8,5 eingebe soll die Textbox 1 Schrift schwarz bleiben,komme ich unter Min. oder über Max. dann soll meine Textbox1 Schrift rot werden.
Bei den oben genannten Min./Max. Werten (6,5-8,5)klappt alles einwandfrei, sowie bei ca. 20 weiteren Min/Max Werten.

Jetzt kommt es:
Gebe ich als Min. 8,0 und Max: 10,0 ein , spielt der Code verrückt, Eingabe in Textbox1 wird direkt rot geschrieben obwohl sie im Range liegen, usw.
Werte die Problem machen:
Min. Max.
8,0-10,0
20,0-12,0
9,5-12,5
30,0-33,0
7,5-10,5
9,0-12,0
Rest noch nicht bekannt.
Mein Code im Anschluss.
Ich hoffe Ihr könnt mir helfen, ich hab da echt einen Hänger, da es bei vielen Werten geht, nur bei manchen nicht.
Vielen Dank schon mal für die Mühe
Gruß Thorsten

Private Sub TextBox1_Change()

If TextBox1 >= TextBox2 Then
TextBox1.ForeColor = &H80000012
End If

If TextBox1 < TextBox2 Then
TextBox1.ForeColor = &HFF& 'rot
End If

If TextBox1 <= TextBox3 Then
TextBox1.ForeColor = &H80000012
End If

If TextBox1 > TextBox3 Then
TextBox1.ForeColor = &HFF& 'rot
End If

End Sub

  

Betrifft: AW: min./max. Werte aus Textbox richtig einlesen von: Hajo_Zi
Geschrieben am: 14.09.2014 12:20:27

Hallo Torsten,

Textbox enthält das was der Name sagt Text, den kannst Du nicht Zahlenmäßig vergleichen, da sind Umwandlungsfunktionen Notwendig Cdbl()

GrußformelHomepage


  

Betrifft: AW: min./max. Werte aus Textbox richtig einlesen von: ransi
Geschrieben am: 14.09.2014 12:46:16

Hallo thorsten

versuch mal so:

' **********************************************************************
' Modul: UserForm1 Typ: Userform
' **********************************************************************

Option Explicit

Private Sub TextBox1_Change()
    Select Case CDbl(TextBox1.Text)
        Case CDbl(TextBox2.Text) To CDbl(TextBox3.Text)
            TextBox1.ForeColor = vbRed
        Case Else
            TextBox1.ForeColor = vbBlack
    End Select
End Sub



ransi


  

Betrifft: AW: min./max. Werte aus Textbox richtig einlesen von: Thorsten
Geschrieben am: 14.09.2014 13:04:21

Hallo ransi,
klappt leider auch nicht, Wert wird direkt rot geschrieben und wenn ich die Textbox1 leere
für einen neuen Wert einzutragen bekomme ich einen Laufzeit Fehler


  

Betrifft: AW: min./max. Werte aus Textbox richtig einlesen von: Thorsten
Geschrieben am: 14.09.2014 13:26:52

hallo ransi,
noch ein Nachtrag.
Mit deinem Code wird der wert zwischen Min un Max rot gemacht.
Was darüber und darunter liegt wird schwarz, ist wohl verdreht und das Problem halt,
wenn ich die Eingabe Feld (TexBox 1) ganz leer mache, kommt ei Laufzeit Fehler.

Sorry bin Anfänger
Gruß Thorsten


  

Betrifft: AW: min./max. Werte aus Textbox richtig einlesen von: ransi
Geschrieben am: 14.09.2014 13:29:00

Hallo

DAs kommt daher das "" kein Zahl sondern Text ist.
TEste mal dieses:

' **********************************************************************
' Modul: UserForm1 Typ: Userform
' **********************************************************************

Option Explicit


Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Dim Regex As Object
    Set Regex = CreateObject("Vbscript.Regexp")
    With Regex
        .Pattern = "^(\d+|\d+,|\d+,\d+)$"
        If .test(TextBox1.Text & Chr(KeyAscii)) = False Then
            KeyAscii = 0
            Else:
            On Error Resume Next
            Select Case CDbl(TextBox1.Text & Chr(KeyAscii))
                Case CDbl(TextBox2.Text) To CDbl(TextBox3.Text)
                    TextBox1.ForeColor = vbBlack
                Case Else
                    TextBox1.ForeColor = vbRed
            End Select
            On Error GoTo 0
        End If
    End With
End Sub



ransi


  

Betrifft: AW: min./max. Werte aus Textbox richtig einlesen von: Thorsten
Geschrieben am: 14.09.2014 13:52:47

Hi ransi,

jetzt klappt alles super, genau so wollte ich es.
Tausend Dank.

Viele Grüße
Thorsten


 

Beiträge aus den Excel-Beispielen zum Thema "min./max. Werte aus Textbox richtig einlesen"