Excel, Wenn Bedingung wird nicht richtig ausgeführt

Fritz50

Stammgast
Hallo

Da habe ich eine ComboBox in die ich einen Wert aus einem Bereich eintrage (10, 9.75 ... 8.25).

Anschliessend folgen ein paar Wenn Entscheidungen:

ResultatB.Value = "" ' löschen
If ((ComboBox2Note.Value <= "10.0") And (ComboBox2Note.Value >= "9.5")) Then
ResultatB.Value = "+"
End If
If ((ComboBox2Note.Value <= "9.0") And (ComboBox2Note.Value >= "8.75")) Then
ResultatB.Value = "-"
End If
If ((ComboBox2Note.Value <= "8.5") And (ComboBox2Note.Value >= "8.25")) Then
ResultatB.Value = "o"
End If

Nun wird der erste Fall, wenn der Wert 10, 9.75 oder 9.5 ist nicht erkannt. Der Entscheid ist immer "false", der Wert "+" wird nicht zugeordnet.
Die andern Werte funktionieren, so auch 9.25, der keinen Wert zuordnet.
Ist es ein Problem der Typisierung?
Die Zellen in denen die ComboBox-Auswahl steht sind als Zahl mit zwei Kommastellen formatiert.
Danke für jeden Hinweis.

Gruss
Fritz
 

nochEinAndreas

Stammgast
Hallo Fritz,

ich vermute stark, dass das damit zusammenhängt, das der Wert von Comboboxen immer ein Text ist. Wenn du Texte mit < oder > vergleichst, bezieht sich das auf den ASCII Wert der Zeichen im Text. Wenn du also "10.0" mit "9.75" (als Text) vergleichst, dann wird zunächst das erste Zeichen veglichen, hier also "1" und "9". Die "9" ist ASCII-mäßig größer als die "1", auch wenn zahlenmäßig 9.75 kleiner ist als 10.
Versuche mal Folgenedes: Wandele die Texte aus den Comboboxen vor dem Vergleich in echte Zahlen um. Das geht mit der Val-Funktion. Die Zahlen müssen dann auch nicht mehr als Text (in Anführungszeichen) geschrieben werden, sondern als echte Zahlen:
Code:
If ((Val(ComboBox2Note.Value) <= 10) And (Val(ComboBox2Note.Value) >= 9.5)) Then
ResultatB.Value = "+"
End If
If ((Val(ComboBox2Note.Value) <= 9.0) And (Val(ComboBox2Note.Value) >= 8.75)) Then
ResultatB.Value = "-"
End If
If ((Val(ComboBox2Note.Value) <= 8.5) And (Val(ComboBox2Note.Value) >= 8.25)) Then
ResultatB.Value = "o"
End If

Eventuell hilft das.

Grüße, Andreas
 
Oben