+ Reply to Thread
Results 1 to 6 of 6

Changing the Colour of an Auto Shape (Line)

  1. #1
    Registered User
    Join Date
    10-20-2004
    Posts
    5

    Changing the Colour of an Auto Shape (Line)

    Could anyone help me with this query. I simply want to create a line that changes colour, which I can do in part. But why when I run the code, when BLUE or GREEN is entered into Test Sub, it just runs as RED?

    Please Login or Register  to view this content.
    It is obviously something to do with my "
    Please Login or Register  to view this content.
    " statement, but I'm not sure what. Also, is there a more intuitive way of selecting the colours than repeating similar code for RED GREEN AND BLUE. Any help is appreciated.

  2. #2
    Forum Contributor
    Join Date
    01-21-2005
    Location
    Colorado
    MS-Off Ver
    2000,2003,2007
    Posts
    481
    Change your else if from Or to And

    ElseIf Color <> "GREEN" Or Color <> "BLUE" Then

    to

    ElseIf Color <> "GREEN" And Color <> "BLUE" Then

    HTH

  3. #3
    K Dales
    Guest

    RE: Changing the Colour of an Auto Shape (Line)

    Your code fails right here:
    ElseIf Color <> "GREEN" Or Color <> "BLUE" Then
    because one of these must always be False , so Not Green or Not Blue
    together is, of course, False
    Make it And instead of Or and I think it will work

    "d.i.barr" wrote:

    >
    > Could anyone help me with this query. I simply want to create a line
    > that changes colour, which I can do in part. But why when I run the
    > code, when BLUE or GREEN is entered into Test Sub, it just runs as
    > RED?
    >
    >
    > Code:
    > --------------------
    > Sub TestShoot()
    > Call DrawShooting(171#, 115.5, 255.75, 167.25, 2, "BLUE")
    > End Sub
    >
    > Sub DrawShooting(StartX As Single, StartY As Single, EndX As Single, EndY As Single, _
    > Shots As Integer, Optional Color As String)
    > Dim Shot As Shape
    > Dim i As Integer
    > Dim j As Integer
    >
    > 'AddLine(BeginX As Single, BeginY As Single, EndX As Single, EndY As Single) As Shape - Member of Excel.Shapes
    > If IsMissing(Color) Then
    > Color = "RED"
    > ElseIf Color <> "GREEN" Or Color <> "BLUE" Then
    > Color = "RED"
    > End If
    >
    >
    > Select Case Color
    > Case "RED"
    > For i = 1 To Shots
    > Set Shot = ActiveSheet.Shapes.AddLine(StartX, StartY, EndX, EndY)
    > For j = 1 To 255
    > Shot.Line.ForeColor.RGB = RGB(255, 0 + j, 0 + j)
    > Application.Wait Now() + 0.0000007
    > Next
    > Shot.delete
    > Next
    > Case "GREEN"
    > For i = 1 To Shots
    > Set Shot = ActiveSheet.Shapes.AddLine(StartX, StartY, EndX, EndY)
    > For j = 1 To 255
    > Shot.Line.ForeColor.RGB = RGB(0 + j, 255, 0 + j)
    > Application.Wait Now() + 0.0000007
    > Next
    > Shot.delete
    > Next
    > Case "BLUE"
    > For i = 1 To Shots
    > Set Shot = ActiveSheet.Shapes.AddLine(StartX, StartY, EndX, EndY)
    > For j = 1 To 255
    > Shot.Line.ForeColor.RGB = RGB(0 + j, 0 + j, 255)
    > Application.Wait Now() + 0.0000007
    > Next
    > Shot.delete
    > Next
    > End Select
    > End Sub
    > --------------------
    >
    >
    > It is obviously something to do with my "
    > Code:
    > --------------------
    > If Color <> "GREEN" Or Color <> "BLUE" Then
    > --------------------
    > " statement, but I'm not sure what. Also, is there a more intuitive way
    > of selecting the colours than repeating similar code for RED GREEN AND
    > BLUE. Any help is appreciated.
    >
    >
    > --
    > d.i.barr
    > ------------------------------------------------------------------------
    > d.i.barr's Profile: http://www.excelforum.com/member.php...o&userid=15521
    > View this thread: http://www.excelforum.com/showthread...hreadid=381268
    >
    >


  4. #4
    Forum Contributor
    Join Date
    01-21-2005
    Location
    Colorado
    MS-Off Ver
    2000,2003,2007
    Posts
    481
    You can actually avoid that IF statement altogether and take better advantage of your Select Case statement.

    see modified code below:

    Please Login or Register  to view this content.
    HTH

  5. #5
    Registered User
    Join Date
    10-20-2004
    Posts
    5
    Thanks bhofsetz and K Dales for the response, that works a treat. Bhofsetz, the Case statement does make a lot more sense. Have you any idea how I would make the values of "Color" non-case sensitive? That is, to work with BLUE or Blue or blue or bLue etc without listing them all seperately in the Case statement? Thanks in advance.

  6. #6
    Registered User
    Join Date
    10-20-2004
    Posts
    5
    Sorry, I got it ten minutes after posting. Just placing
    Please Login or Register  to view this content.
    at the start will work.

+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1