VBA "größer als" nicht genau
#1
Moinsen,

der Joe schon wieder :)

Ich habe eine If Bedingung, der soll mit den Textfeld rot färben, wenn die Zah in diesem Textfeld kleiner ist als die Zahl im anderen Textfeld.
Wenn die Zahl 500 ist und die andere 320, dann zeigt er grün.
Ist die Zahl allerdings 2000 und die andere 320 zeigt er rot an, obwohl die Zahl größer ist.
Ich hab den Algorithmus so verstanden das er nicht die ganze Zahl als solche nimmt, sondern nur die jeweiligen Ziffern vergleicht.
Wie kann man das Problem lösen?



Code:
'Ändert die Farbe der Zellen
If Me!txtTreibistmitPrüflast.Value > Me.txtTreibzulmitPrüflast.Value Then
Me.txtTreibistmitPrüflast.BackColor = vbRed
Else
Me.txtTreibistmitPrüflast.BackColor = vbGreen
End If

Gruß Joe Angel
Top
#2
Moin!  :19:
In einer Textbox steht ... Text!
Wenn Text verglichen wird, wird immer das erste Zeichen verglichen.
Dies siehst Du z.B. in der Sortierreihenfolge des Explorer:
a < b ist klar
"1" < "x" ist bereits schwieriger, hier kommt es auf den ascii-Wert an, 1 ist 49, x ist 120, also "1" < "x"
"1000" < "2" ! da 49 < 50

Langer Rede kurzer Sinn:
Wandele den Text in eine Zahl um, am einfachsten per Multiplikation mit 1:
Code:
If Me!txtTreibistmitPrüflast.Value * 1 > Me.txtTreibzulmitPrüflast.Value * 1 Then

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#3
Reicht schon:
Code:
txtTreibistmitPrüflast.BackColor = iif(val(txtTreibistmitPrüflast) > Val(txtTreibzulmitPrüflast),vbred,vbGreen)
Top
#4
Hey Ralf,

Danke für deine Antwort :)
Manchmal kann alles so einfach sein...

Gruß Joe Angel
Top
#5
Oder doch nicht so einfach...

Wenn ich in der Textbox jetzt eine Zahl reinschreibe, aber die Zahlen wieder entferne kommt muss ich die Formel Debuggen.
Hast du auch eine Lösung dafür?

Gruß Joe

Ps: Ich Glaub wenn ich fertig bin mit meiner Excel Datei muss ich das ganze Froum auf ein Bier einladen :19:
Top
#6
Hi again!
snb hat Dir ja bereits eine Lösung angeboten.
Val() wirft bei nicht in eine Zahl umwandelbaren Text eine 0 aus, so dass hier ohne Fehlerbehandlung gearbeitet werden kann.
Lies Dir mal die VBA-Hilfe zu Val() durch.
Zitat:Die Val-Funktion liest die Zeichen einer Zeichenfolge bis zum ersten Zeichen, das nicht als Teil einer Zahl interpretiert werden kann.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#7
Danke, jetzt hab ich es!
Top
#8
@RPP

Ich habe dir eine PN geschickt. Hast du die gesehen ?
Top
#9
@snb:
:19:
Antwort ist unterwegs!

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top


Gehe zu:


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