hammy78
hammy78

Reputation: 27

Problems with If and Else Statements in Visual Basic

I am building a program that randomly generates a number then this number is linked to a picture, that displays in a picture box. I have one that has a text box below it, and one of the pictures is variable depending on what this text box says, so I used some if and else statements. But I get this error, 'Else' must be preceded by a matching 'If' or 'ElseIf'. There is probably a simple solution to it that I am just not seeing, here is the code.

Private Sub Button9_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    Timer1.Start()
    Dim key As Integer
    key = (Rnd() * 3)
    Select Case key
        Case 1
            Label14.Text = "Assault"
        Case 2
            Label14.Text = "Support"
        Case 3
            Label14.Text = "Specialist"
    End Select
    If Label14.Text = "Assault" Then
        Timer1.Start()
        Dim key1 As Integer
        key1 = (Rnd() * 15)
        Select Case key1
            Case 1
                PictureBox10.Image = My.Resources.assault_1
                TextBox7.Text = "AC130"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "11"
                Else TextBox8.Text = "12"
            Case 2
                PictureBox10.Image = My.Resources.assault_2
                TextBox7.Text = "Care Package"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "3"
                Else TextBox8.Text = "4"
            Case 3
                PictureBox10.Image = My.Resources.assault_3
                TextBox7.Text = "Juggernaut"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "14"
                Else TextBox8.Text = "15"
            Case 4
                PictureBox10.Image = My.Resources.assault_4
                TextBox7.Text = "Attack Helicopter"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "6"
                Else TextBox8.Text = "7"
            Case 5
                PictureBox10.Image = My.Resources.assault_5
                TextBox7.Text = "Pave Low"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "11"
                Else TextBox8.Text = "12"
            Case 6
                PictureBox10.Image = My.Resources.assault_6
                TextBox7.Text = "IMS"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "4"
                Else TextBox8.Text = "5"
            Case 7
                PictureBox10.Image = My.Resources.assault_7
                TextBox7.Text = "Assault Drone"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "9"
                Else TextBox8.Text = "10"
            Case 8
                PictureBox10.Image = My.Resources.assault_8
                TextBox7.Text = "Strafe Run"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "8"
                Else TextBox8.Text = "9"
            Case 9
                PictureBox10.Image = My.Resources.assault_9
                TextBox7.Text = "AH-6 Overwatch"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "8"
                Else TextBox8.Text = "9"
            Case 10
                PictureBox10.Image = My.Resources.assault_10
                TextBox7.Text = "Osprey Gunner"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "16"
                Else TextBox8.Text = "15"
            Case 11
                PictureBox10.Image = My.Resources.assault_11
                TextBox7.Text = "Percision Airstrike"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "5"
                Else TextBox8.Text = "6"
            Case 12
                PictureBox10.Image = My.Resources.assault_12
                TextBox7.Text = "Predator Missile"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "4"
                Else TextBox8.Text = "5"
            Case 13
                PictureBox10.Image = My.Resources.assault_13
                TextBox7.Text = "Reaper"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "8"
                Else TextBox8.Text = "9"
            Case 14
                PictureBox10.Image = My.Resources.assault_14
                TextBox7.Text = "Sentry Gun"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "4"
               Else  TextBox8.Text = "5"
            Case 15
                PictureBox10.Image = My.Resources.assault_15
                TextBox7.Text = "Assault UAV"
                If TextBox14.Text = "Hardline" Then TextBox8.Text = "2"
                Else TextBox8.Text = "3"

        End Select
    End If
End Sub

Upvotes: 1

Views: 6290

Answers (4)

luke
luke

Reputation: 1

I had the same issue with this code and resolved it:

If buttoncount = 1 Then
         buttoncount = 1
 ElseIf (chkUnbook.Checked = True) Then 
        buttoncount = 0
 End if

Apparently, you must also place an if before the end if and else if, even though there is one already present ( VB 2010 )

Upvotes: 0

Olivier Jacot-Descombes
Olivier Jacot-Descombes

Reputation: 112352

You can also use the If operator:

TextBox8.Text = If(TextBox14.Text = "Hardline", "5", "6")

Upvotes: 1

DOK
DOK

Reputation: 32841

When you begin a code block with If, you must end that code block with End If.

I don't see End If in any of your Case blocks.

Here is an example from MSDN: if you put it all on one line, you don't need the End If

If condition [ Then ]
    [ statements ]
[ ElseIf elseifcondition [ Then ]
    [ elseifstatements ] ]
[ Else
    [ elsestatements ] ]
End If

-or-

If condition Then [ statements ] [ Else [ elsestatements ] ]

Upvotes: 1

LarsTech
LarsTech

Reputation: 81620

You can't have code after THEN "AND" have an ELSE on a different line:

You code:

If TextBox14.Text = "Hardline" Then TextBox8.Text = "11"
  Else TextBox8.Text = "12"

Fix:

If TextBox14.Text = "Hardline" Then
  TextBox8.Text = "5"
Else
  TextBox8.Text = "6"
End If

or:

If TextBox14.Text = "Hardline" Then TextBox8.Text = "5" Else TextBox8.Text = "6"

or place an underscore at the end:

If TextBox14.Text = "Hardline" Then TextBox8.Text = "11" _
  Else TextBox8.Text = "12"

Upvotes: 7

Related Questions