2015-11-03 65 views
1

我发现,在旧的VBA代码中,有些奇怪的东西。我预计“如果没有其他”,但没有,它编译:三个“If”语句但只有两个“End If”?

Sub main() 

Dim xyz As Integer 
xyz = 10 'Not important 

If xyz < 20 Then 'If #1 

    If xyz <> 11 Then 'If #2 

     If xyz = 10 Then _ 
      MsgBox ("10") 'If #3 
    End If 'End if #1 
    Else 
     MsgBox ("ok") 
     Exit Sub 
    End If 'End if #2 

End Sub 'No end if #3 ? 

我不想重复使用该代码。我只是好奇它是如何工作的,没有第三个“如果”。

+2

问题是第三个if实际上是一行if语句,带'_'换行符,所以它不需要结束if。 –

+1

使用这样的续行字符太糟糕了。即使没有这些,逻辑结构似乎也是不必要的晦涩难懂。 –

回答

2

If #3实际上是通过使用下划线字符(又名Line Continuation Operator_来代表单行代码。该运营商允许的代码行换行到下一行的编辑器,以便:

If xyz = 10 Then _ 
     MsgBox ("10") 'If #3 

居然是:

If xyz = 10 Then MsgBox ("10") 'If #3 

你可以写缩写IF语句这种方式。我经常在旧的&新代码中看到这个。