Clever-Excel-Forum

Normale Version: VBA "größer als" nicht genau
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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
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
Reicht schon:
Code:
txtTreibistmitPrüflast.BackColor = iif(val(txtTreibistmitPrüflast) > Val(txtTreibzulmitPrüflast),vbred,vbGreen)
Hey Ralf,

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

Gruß Joe Angel
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:
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
Danke, jetzt hab ich es!
@RPP

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

Gruß Ralf