Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Antworten 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)
Antworten Top
#3
Reicht schon:
Code:
txtTreibistmitPrüflast.BackColor = iif(val(txtTreibistmitPrüflast) > Val(txtTreibzulmitPrüflast),vbred,vbGreen)
Antworten Top
#4
Hey Ralf,

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

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

Ich habe dir eine PN geschickt. Hast du die gesehen ?
Antworten 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)
Antworten Top


Gehe zu:


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