How to work multiple ifs

H

Homer

Please ignore the previous most with the same name, something went goofy when
I tried to post. Is there any way to delete the first post?

What I am looking to do is call one of three macros depending on the
contents of a cell. If I have my code to look like below, the second macro
is run regardless if it is true or not.

Sub Special_Terms()
If AH13 = AH6 Then
Call Special_Terms_Frank
If AH13 = AH7 Then
Call Special_Terms_Jack
Else
Call Delete_Special_Terms
End If
End If
End Sub

If I change the code that is below, it returns the first macro regardless of
it being true.

Sub Special_Terms()
If AH13 = AH6 Then
Call Special_Terms_Frank
ElseIf AH13 = AH7 Then
Call Special_Terms_Jack
Else
Call Delete_Special_Terms
End If
End Sub


Can anyone explain what the difference in each of the two options above and
how do I make only the true macro run?
 
R

Rick Rothstein

AH13 and AH6 are variables which you haven't assigned anything to, so their
values are zero and, hence, always equal to each other. I'm assuming those
are supposed to be cell addresses and you want to compare the contents of
those cells, right? Try this...

Sub Special_Terms()
If Range("AH13").Value = Range("AH6").Value Then
Call Special_Terms_Frank
ElseIf Range("AH13").Value = Range("AH7").Value Then
Call Special_Terms_Jack
Else
Call Delete_Special_Terms
End If
End Sub
 
H

Homer

Thank you Rick. Your additions work well.

By just having AH13 and so on.. doesn't point to a cell. By adding
Range("AH13").value points it to a cell.

This will work for one page in a sheet. What if I wanted to be able to have
it work for all pages in the sheet?

I tried adding Additional cells but it didn't work. If it should have, the
problem may be in the macro it is trying to call.

Thanks
 
R

Rick Rothstein

I'm not 100% sure of your question (you should always post your question
with details of what your layout is and what you want to end up with
afterward, with examples if possible); but, to get you started, you can
point the range at any worksheet you want by prefacing the range with a
Worksheets property call. For example...

Range("A1")

points to A1 on the Active worksheet, whereas...

Worksheets("Main Data").Range("A1")

points to A1 on the worksheet named "Main Data".
 
H

Homer

Thanks again Rick. You have cleared up a few things. I'm going to try to
figure a few things out.

Thanks again,
Don
 

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