user3273965
user3273965

Reputation: 25

"Block If without End If" error

I'm getting a compile error for this code:

Public Sub CommandButton1_Click()
If TextBox1.Text = "log off" Then
Shell "cmd.exe /c shutdown -l", vbHide: TextBox2.Text = "Logging off"
If TextBox1.Text = "shutdown" Then
Shell "cmd.exe /c shutdown -s", vbHide: TextBox2.Text = "Shutting Down"
If TextBox1.Text = "restart" Then
Shell "cmd.exe /c shutdown -r", vbHide: TextBox2.Text = "Restarting"

Else
MsgBox "Command Not Defined",vbCritical
End Sub

Now it comes up with this Error Message of "Block If without End If". Why?

Upvotes: 0

Views: 12111

Answers (1)

Dmitry Pavliv
Dmitry Pavliv

Reputation: 35853

You have missed End If:

Public Sub CommandButton1_Click()
    If TextBox1.Text = "log off" Then
        Shell "cmd.exe /c shutdown -l", vbHide: TextBox2.Text = "Logging off"
    ElseIf TextBox1.Text = "shutdown" Then
        Shell "cmd.exe /c shutdown -s", vbHide: TextBox2.Text = "Shutting Down"
    ElseIf TextBox1.Text = "restart" Then
        Shell "cmd.exe /c shutdown -r", vbHide: TextBox2.Text = "Restarting"
    Else
        MsgBox "Command Not Defined", vbCritical
    End If
End Sub

Actually in your code you will always have TextBox2.Text equals to "Restarting". That's why you should use ElseIf statement.

You could use Select Case statement as well:

Public Sub CommandButton1_Click()
    Select Case TextBox1.Text
        Case "log off"
            Shell "cmd.exe /c shutdown -l", vbHide: TextBox2.Text = "Logging off"
        Case "shutdown"
            Shell "cmd.exe /c shutdown -s", vbHide: TextBox2.Text = "Shutting Down"
        Case "restart"
            Shell "cmd.exe /c shutdown -r", vbHide: TextBox2.Text = "Restarting"
        Case Else
            MsgBox "Command Not Defined", vbCritical
    End Select
End Sub

Upvotes: 8

Related Questions