2014-02-05 4 views
0

Я получаю ошибку компиляции этого кода:«Блок Если без End If» ошибки

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 

Теперь приходит с этим появляется сообщение об ошибке от «Блока Если без End If». Почему?

+1

, что вы делаете это самостоятельно терминатор 'IF' заявление, поставив условие и результат в одной строке. последний 'Else' плавает, так как все вышеприведенные выражения' IF' уже завершены. @simoco уже показал альтернативу. – L42

ответ

7

Вы пропустили 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 

На самом деле в вашем коде, вы всегда будете иметь TextBox2.Text равен "Restarting". Вот почему вы должны использовать оператор ElseIf.

Вы можете использовать Select Case заявление, а также:

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 
+2

+ 1 за то, что также предлагает выбрать случай :) –

Смежные вопросы