Problem: True vs. False

  • Thread starter Mahadevan Swamy
  • Start date
M

Mahadevan Swamy

Hi,

I am using excel and VB to do my work and when some wrong result is
returned in excel, I debug my code to find where it is wrong. When I
evaluated a particular statement: -

'Checks if the edges and sensor center point are close to the line B
ElseIf (Abs((Abs((mB * SensorX) - SensorY + cB) / (Sqr((mB ^ 2) + 1)))
- SensorRadius) <= 0.03) Or
((Abs((mB * SensorX) - SensorY + cB) / (Sqr((mB ^ 2) + 1))) <= 0.03)
And
((SensorY > ((mC * SensorX) + cC))
And
(SensorY < ((mA * SensorX) + cA)))
Then
InRange = "X"

I found out that 1st, 2nd and 4th statments gave me True whereas the
third statment gave me a False. Now the entire result must be a False.
(True or True And False And True) = False. But instead I get True.
What is wrong???? I have assigned my brackets correctly and I cant see
why this problem is caused? Can anyone please help? Thanks

Swamy
 
G

Guest

Swamy,

Perhaps you need to group the 1st and 2nd conditions together..i.e.,

True or True And False And True = True

but,

(True or True) And False And True = False
 
R

Rick Rothstein \(MVP - VB\)

I found out that 1st, 2nd and 4th statments gave me True whereas the
third statment gave me a False. Now the entire result must be a False.
(True or True And False And True) = False. But instead I get True.
What is wrong???? I have assigned my brackets correctly and I cant see
why this problem is caused? Can anyone please help? Thanks

AND has a higher operator precedence than OR, so

True Or True And False And True

evaluates the ANDs first, before the OR... this means the intermediate
result, after the ANDs are handled, is this...

True Or False

which evaluates to True. You can use parentheses to force the order of
precedence handling. If that first term is supposed to be "grouped" with the
second term, just enclose them both in parentheses. Using your True, False
example (instead of repeating the actual logical expressions), this is what
you need...

(True Or True) And False And False

which will equate to False.

Rick
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top