为什么这个IF语句不需要End IF

时间:2012-09-18 10:38:22

标签: loops if-statement excel-vba vba excel

我使用以下代码快照来遍历文件夹中的文件,它有一个简单的If来检查文件夹中是否有文件,如果没有则退出。我已经意识到它最终不需要End If来正确编译。但是,我想添加一个msgbox来解释它已退出的原因,为此我需要在代码中引入End If

为什么?

原始代码

If Len(strfilename) = 0 Then Exit Sub
    Do Until strfilename = ""
       'Do some stuff
    strfilename = Dir()
Loop

使用MsgBox

If Len(strfilename) = 0 Then
    MsgBox ("No Files Found")
    Exit Sub
Else
    Do Until strfilename = ""
        'Do some stuff
    strfilename = Dir()
    Loop
End If

1 个答案:

答案 0 :(得分:7)

if只有一行格式:

if (expr) then X

其中X必须位于同一上,这对单个表达式很有用:

if 1=1 then exit sub

或奇怪但合法(使用:续音字符)

if 1 = 1 Then MsgBox ("No Files Found"): Exit Sub

使用更易读的块形式更好地编写,需要end ifif块结束时告诉编译器:

if 1 = 1 Then 
   MsgBox ("No Files Found")
   Exit Sub
end if