Problem with If,Then, Else

J

John

Hi Everyone
Below is a sample of my codes for a Staircase Calculator.
My problem is at the If command at the bottom, I tried different things
but no success, I need your help.
Regards
John

Sub Make_Stairs4()

Dim nx As Variant
nx = 4
Application.ScreenUpdating = False
ActiveWindow.Zoom = 100

Height_size = Range("G1").Value
Width_size = Range("G2").Value
Left_size = Range("K1").Value
Top_size = Range("K2").Value

ActiveSheet.Shapes.AddShape(msoShapeRightTriangle, _
Left_size, Top_size, Width_size, Height_size).Select

'Selection.Characters.Text = "4"

Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 255)
Selection.ShapeRange.Fill.Transparency = 0.65
Selection.ShapeRange.Line.Weight = 0.75
Selection.ShapeRange.Line.ForeColor.RGB = RGB(10, 10, 10)
Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)

ActiveSheet.Range("D2").Select

If nx = Range("A3").Value Then Selection.Characters.Text = "Foor" , Exit Sub

Else: Selection.Characters.Text = "4"

End If

Call Make_Stairs5

End Sub
 
R

Rick Rothstein

If nx = Range("A3").Value Then Selection.Characters.Text = "Foor" , Exit
Sub

Else: Selection.Characters.Text = "4"

End If

Forget trying to combine things on the same line and use normal blocking...

If nx = Range("A3").Value Then
Selection.Characters.Text = "Foor"
Exit Sub
Else
Selection.Characters.Text = "4"
End If

As for your error, you can't mix putting commands after the Then keyword
with Else conditionals. If you have this...

If <logical expression> Then <do something>

then you cannot follow it with an ElseIf nor and Else; however, if you put
the <do something> code on a separate line from the Then keyword, you can.
 
J

John

Hi Rick
Thank you for your reply.
When I execute the codes, it stops at this line
Selection.Characters.Text = "Foor"
Runtime error 1004
Unable to set the text property of the character class.
Best regards
John
 
R

Rick Rothstein

Actually, I didn't look at what the code is supposed to be doing; rather, I
just spotted the structural error and posted the correction for it. As to
your current question, what is this line...

Selection.Characters.Text = "Foor"

supposed to be doing? Are you just trying to assign "Foor" to the selected
cell or cells? If so, just do this...

Selection.Value = "Foor"

If you are attempting to do something else, you will have to give a more
detailed description. And, in addition to such a description, I would want
to know if the selected cell or cells contain formulas or text constants.
 
J

John

Hi Rick
Explaining myself in English is not my forte but will sure try.
With this line, I'm inserting text in the Triangle
Selection.Characters.Text = "Floor"
If I type this line at the top like this:
ActiveSheet.Shapes.AddShape(msoShapeRightTriangle, _
Left_size, Top_size, Width_size, Height_size).Select
Selection.Characters.Text = "Floor"
it works, but below in the IF statement it doesn't.
What it's doing is numbering the stairs and if you reach the last stair, instead
of a number,
it should print "Floor".
Hope I have explained it better for you, if not , please tell me, will be glad
to try again.
Thank you for your patience.
Regards
John
 
R

Ryan H

Try this. Hope this helps! If so, let me know, click "YES" below.
Sub Make_Stairs4()

Dim nx As Variant

nx = 4
Application.ScreenUpdating = False
ActiveWindow.Zoom = 100

Height_size = Range("G1").Value
Width_size = Range("G2").Value
Left_size = Range("K1").Value
Top_size = Range("K2").Value

ActiveSheet.Shapes.AddShape(msoShapeRightTriangle, _
Left_size, Top_size, _
Width_size, Height_size).Select

'Selection.Characters.Text = "4"

With Selection.ShapeRange
.Fill.ForeColor.RGB = RGB(255, 255, 255)
.Fill.Transparency = 0.65
.Line.Weight = 0.75
.Line.ForeColor.RGB = RGB(10, 10, 10)
.Line.BackColor.RGB = RGB(255, 255, 255)
End With

ActiveSheet.Range("D2").Select

If nx = Range("A3").Value Then
Selection.Characters.Text = "Foor"
Exit Sub
Else
Selection.Characters.Text = "4"
End If

Call Make_Stairs5

End Sub
 
J

John

Thanks for your reply.
It's the same thing as Rick, getting the same error.
Any ideas ?
Regards
John
 
J

John

Thanks for your help Rick
I got it working,
"ActiveSheet.Range("D2").Select" was in conflict I guess!!
I change its location and it's working.
Regards
John
 
J

John

Thanks for your help Ryan
I got it working,
"ActiveSheet.Range("D2").Select" was in conflict I guess!!
I change its location and it's working.
Regards
John
 

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