Vergelijking werkt niet?

Status
Niet open voor verdere reacties.

ardkapteijn

Gebruiker
Lid geworden
28 mei 2007
Berichten
128
Hallo,

Ben bezig met een vergelijkings macro in VBA, daarbij leest die een getal in en vergelijkt deze met een ander getal. Alleen als ik de vergelijking -198 <= -29 maak krijg ik als antwoord terug dat -198 niet kleiner is als -29 :shocked: hoe kan dat? En wat doe ik verkeerd???

Als ik de vergelijking maak met positieve getallen uiteraard met >= vergelijking krijg ik alsnog niet het gewenst antwoord :confused:



Deel van de gebruikte programmeercode.

KolomL = "H"
Kolom = KolomL + MCounter
MinTemP = Sheets("Materials").range(Kolom).Value

KolomL = "I"
Kolom = KolomL + MCounter
MaxTemP = Sheets("Materials").range(Kolom).Value

Test2 = Sheets("Pre calculation").range("C14")

MinTemPs = Sheets("Pre calculation").range("C14")
MaxTemPs = Sheets("Pre calculation").range("D14")


If MinTemP >= MinTemPs Then
MinYesNo = "Yes"
Else
MinYesNo = "No"
End If

If MaxTemP >= MaxTemPs Then
MaxYesNo = "Yes"
Else
MaxYesNo = "No"
End If


If MaxYesNo = "Yes" And MinYesNo = "Yes" Then
xxxxxxx
Else
xxxxxxx
End If
 
waarschijnlijk omdat je je variabelen niet of slecht hebt gedeclareerd. Dan gebeuren er soms nog wel eens vreemde dingen.

voorbeeld:
Code:
dim getal as integer[COLOR="seagreen"] 'alleen hele getallen[/COLOR]
dim getal2 as double [COLOR="SeaGreen"]'Dat is voor getallen met een puntje (komma, zoals 43,32)[/COLOR]

dus
Code:
dim MinTemP as integer
dim MinTemPs as integer
[COLOR="SeaGreen"]'noot dat dat dus alleen werkt als het hele getallen zijn zoals 219 of -43. Dingen als 32,42 of -88,66393 moet je als 'double' declareren.[/COLOR]
 
Laatst bewerkt:
Inderdaad raar. Heb je niet een voorbeeldbestand waarnaar ik zou kunnen kijken?
 
Inderdaad raar. Heb je niet een voorbeeldbestand waarnaar ik zou kunnen kijken?

Ben er inmiddels al achter, ik had de getallen ingelezen als string.. blijkbaar zag hij het ene getal als letters en andere getal als getal... of zoiets dergelijks..

Probleem is opgelost door de variabelen te declareren als integer ipv string... blijf het vreemd vinden, maar het werkt nu iedergeval! :p

iedergeval bedankt!
 
Is niet raar, want als je op strings sorteert dan is 198 'kleiner' dan 29. Een 'tekstvergelijking' bekijkt namelijk eerst de eerste letter (of cijfer) en dan pas de tweede etc. Aangezien 198 begint met een 1 en 29 met een 2, is 198 bij een tekstvergelijking kleiner dan 29.

Dit pleit er overigens wel weer voor om inderdaad het juiste datatype te kiezen, in jouw geval dus een integer :thumb:
 
Is niet raar, want als je op strings sorteert dan is 198 'kleiner' dan 29. Een 'tekstvergelijking' bekijkt namelijk eerst de eerste letter (of cijfer) en dan pas de tweede etc. Aangezien 198 begint met een 1 en 29 met een 2, is 198 bij een tekstvergelijking kleiner dan 29.

Dit pleit er overigens wel weer voor om inderdaad het juiste datatype te kiezen, in jouw geval dus een integer :thumb:

Ow, op die manier! Snap hem nu.

Voortaan maar in de gaten houden, ben snel te gemakkelijk door alles maar tot string te benoemen... maar dat werkt dus niet.

Bedankt! :cool:
 
wat je mischien kan helpen is helemaal bovenaan dit te zetten:

Code:
Option Explicit

Door die regel zal het programma fouten geven als je variabelen niet declareerd.

Just a thought - :thumb:
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan