ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   if else if... (https://www.excelbanter.com/excel-programming/442447-if-else-if.html)

pls123

if else if...
 
hello all!!
any reason why this should not work correctly ? ;)))
tx !!!


If aWS.Range("M52").Value = True Then
aWS.Range("M80").Value = 5
Else
If aWS.Range("M51").Value = True Then
aWS.Range("M80").Value = 4
Else
If aWS.Range("M50").Value = True Then
aWS.Range("M80").Value = 3
Else
If aWS.Range("M49").Value = True Then
aWS.Range("M80").Value = 2
Else
If aWS.Range("M48").Value = True Then
aWS.Range("M80").Value = 1
End If
End If
End If
End If
End If

Mike H

if else if...
 
Hi,

Well it's doing exactly what your telling it to do:

Check in turn M52, M51, M50, M49 & M48 of whatever aWs is and as soon as 1
of those tests evaluates as TRUE put a number in M80.

You must be aware that as soon as a condition has evaluated as TRUE then
none of the following tests execute

so the real question is what do you want it to do?
--
Mike

When competing hypotheses are otherwise equal, adopt the hypothesis that
introduces the fewest assumptions while still sufficiently answering the
question.


"pls123" wrote:

hello all!!
any reason why this should not work correctly ? ;)))
tx !!!


If aWS.Range("M52").Value = True Then
aWS.Range("M80").Value = 5
Else
If aWS.Range("M51").Value = True Then
aWS.Range("M80").Value = 4
Else
If aWS.Range("M50").Value = True Then
aWS.Range("M80").Value = 3
Else
If aWS.Range("M49").Value = True Then
aWS.Range("M80").Value = 2
Else
If aWS.Range("M48").Value = True Then
aWS.Range("M80").Value = 1
End If
End If
End If
End If
End If


pls123

if else if...
 
hi mike !!
the problem is that..
i changed the raws of sub like i showed before..
...to make it more efficient for cpu..
but it doesn't write the number !!!

before it was without the else...
like ths..

if 48 true then 1 end if
if 49 true then 2 end if
.....etc ..etc...


i have no idea..!
paolo






"Mike H" wrote:

Hi,

Well it's doing exactly what your telling it to do:

Check in turn M52, M51, M50, M49 & M48 of whatever aWs is and as soon as 1
of those tests evaluates as TRUE put a number in M80.

You must be aware that as soon as a condition has evaluated as TRUE then
none of the following tests execute

so the real question is what do you want it to do?
--
Mike

When competing hypotheses are otherwise equal, adopt the hypothesis that
introduces the fewest assumptions while still sufficiently answering the
question.


"pls123" wrote:

hello all!!
any reason why this should not work correctly ? ;)))
tx !!!


If aWS.Range("M52").Value = True Then
aWS.Range("M80").Value = 5
Else
If aWS.Range("M51").Value = True Then
aWS.Range("M80").Value = 4
Else
If aWS.Range("M50").Value = True Then
aWS.Range("M80").Value = 3
Else
If aWS.Range("M49").Value = True Then
aWS.Range("M80").Value = 2
Else
If aWS.Range("M48").Value = True Then
aWS.Range("M80").Value = 1
End If
End If
End If
End If
End If


pls123

if else if...
 

sorry mike there was another error !!!!!!

i have 2 different pages..
in 1 kind all those cells are empty..

realy very sorry for the disturb !
paolo



"pls123" wrote:

hi mike !!
the problem is that..
i changed the raws of sub like i showed before..
..to make it more efficient for cpu..
but it doesn't write the number !!!

before it was without the else...
like ths..

if 48 true then 1 end if
if 49 true then 2 end if
....etc ..etc...


i have no idea..!
paolo






"Mike H" wrote:

Hi,

Well it's doing exactly what your telling it to do:

Check in turn M52, M51, M50, M49 & M48 of whatever aWs is and as soon as 1
of those tests evaluates as TRUE put a number in M80.

You must be aware that as soon as a condition has evaluated as TRUE then
none of the following tests execute

so the real question is what do you want it to do?
--
Mike

When competing hypotheses are otherwise equal, adopt the hypothesis that
introduces the fewest assumptions while still sufficiently answering the
question.


"pls123" wrote:

hello all!!
any reason why this should not work correctly ? ;)))
tx !!!


If aWS.Range("M52").Value = True Then
aWS.Range("M80").Value = 5
Else
If aWS.Range("M51").Value = True Then
aWS.Range("M80").Value = 4
Else
If aWS.Range("M50").Value = True Then
aWS.Range("M80").Value = 3
Else
If aWS.Range("M49").Value = True Then
aWS.Range("M80").Value = 2
Else
If aWS.Range("M48").Value = True Then
aWS.Range("M80").Value = 1
End If
End If
End If
End If
End If


Mike H

if else if...
 
Hi,

if 48 true then 1 end if
if 49 true then 2 end if


Is a completely different structure. Doing it that that way each of the IF's
will execute even if the first was TRUE so if they are all TRUE that value in
M80 will be the result of the last if statement.

I'm no clearer on what the problem is, the code from your first post works
perfectly for me. If for example we have the following set of conditions

M52=FALSE
M51=FALSE
M50=TRUE
M49=TRUE
M48=TRUE

then the value in M80 will be 3 and M49 & M48 will not be tested. So for the
above set of conditions what result would you expect? What is Aws?
Mike

When competing hypotheses are otherwise equal, adopt the hypothesis that
introduces the fewest assumptions while still sufficiently answering the
question.


"pls123" wrote:

hi mike !!
the problem is that..
i changed the raws of sub like i showed before..
..to make it more efficient for cpu..
but it doesn't write the number !!!

before it was without the else...
like ths..

if 48 true then 1 end if
if 49 true then 2 end if
....etc ..etc...


i have no idea..!
paolo






"Mike H" wrote:

Hi,

Well it's doing exactly what your telling it to do:

Check in turn M52, M51, M50, M49 & M48 of whatever aWs is and as soon as 1
of those tests evaluates as TRUE put a number in M80.

You must be aware that as soon as a condition has evaluated as TRUE then
none of the following tests execute

so the real question is what do you want it to do?
--
Mike

When competing hypotheses are otherwise equal, adopt the hypothesis that
introduces the fewest assumptions while still sufficiently answering the
question.


"pls123" wrote:

hello all!!
any reason why this should not work correctly ? ;)))
tx !!!


If aWS.Range("M52").Value = True Then
aWS.Range("M80").Value = 5
Else
If aWS.Range("M51").Value = True Then
aWS.Range("M80").Value = 4
Else
If aWS.Range("M50").Value = True Then
aWS.Range("M80").Value = 3
Else
If aWS.Range("M49").Value = True Then
aWS.Range("M80").Value = 2
Else
If aWS.Range("M48").Value = True Then
aWS.Range("M80").Value = 1
End If
End If
End If
End If
End If


pls123

if else if...
 

i'm sorry, i had to explain that it was correct the order so that
if 5 was true it would overwrite any other value..

it was important that if 1 2 and 3 was true it would sign 3..
so the if else should be ok starting from the more prioritarius..
so 5 !!

aws was ...

Dim aWB As Workbook
Dim aWS As Worksheet

Set aWB = ThisWorkbook
Set aWS = aWB.Worksheets(1)

the same sub runs on many worbooks at a time !!
paolo





"Mike H" wrote:

Hi,

if 48 true then 1 end if
if 49 true then 2 end if


Is a completely different structure. Doing it that that way each of the IF's
will execute even if the first was TRUE so if they are all TRUE that value in
M80 will be the result of the last if statement.

I'm no clearer on what the problem is, the code from your first post works
perfectly for me. If for example we have the following set of conditions

M52=FALSE
M51=FALSE
M50=TRUE
M49=TRUE
M48=TRUE

then the value in M80 will be 3 and M49 & M48 will not be tested. So for the
above set of conditions what result would you expect? What is Aws?
Mike

When competing hypotheses are otherwise equal, adopt the hypothesis that
introduces the fewest assumptions while still sufficiently answering the
question.


"pls123" wrote:

hi mike !!
the problem is that..
i changed the raws of sub like i showed before..
..to make it more efficient for cpu..
but it doesn't write the number !!!

before it was without the else...
like ths..

if 48 true then 1 end if
if 49 true then 2 end if
....etc ..etc...


i have no idea..!
paolo






"Mike H" wrote:

Hi,

Well it's doing exactly what your telling it to do:

Check in turn M52, M51, M50, M49 & M48 of whatever aWs is and as soon as 1
of those tests evaluates as TRUE put a number in M80.

You must be aware that as soon as a condition has evaluated as TRUE then
none of the following tests execute

so the real question is what do you want it to do?
--
Mike

When competing hypotheses are otherwise equal, adopt the hypothesis that
introduces the fewest assumptions while still sufficiently answering the
question.


"pls123" wrote:

hello all!!
any reason why this should not work correctly ? ;)))
tx !!!


If aWS.Range("M52").Value = True Then
aWS.Range("M80").Value = 5
Else
If aWS.Range("M51").Value = True Then
aWS.Range("M80").Value = 4
Else
If aWS.Range("M50").Value = True Then
aWS.Range("M80").Value = 3
Else
If aWS.Range("M49").Value = True Then
aWS.Range("M80").Value = 2
Else
If aWS.Range("M48").Value = True Then
aWS.Range("M80").Value = 1
End If
End If
End If
End If
End If



All times are GMT +1. The time now is 12:00 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com