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

Ali*_*eir 3 excel vba loops if-statement excel-vba

我使用以下代码快照循环文件夹中的文件,它有一个简单的方法If来检查文件夹中是否有文件,如果没有则退出.我已经意识到它End If最终不需要正确编译.但是,我想添加一个msgbox解释为什么它已经退出并且这样做我需要End If向我的代码介绍一个.

这是为什么?

原始代码

If Len(strfilename) = 0 Then Exit Sub
    Do Until strfilename = ""
       'Do some stuff
    strfilename = Dir()
Loop
Run Code Online (Sandbox Code Playgroud)

使用MsgBox

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

Ale*_* K. 7

有一种形式if:

if (expr) then X
Run Code Online (Sandbox Code Playgroud)

哪里X必须在同一,这对单个表达式很好:

if 1=1 then exit sub
Run Code Online (Sandbox Code Playgroud)

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

if 1 = 1 Then MsgBox ("No Files Found"): Exit Sub
Run Code Online (Sandbox Code Playgroud)

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

if 1 = 1 Then 
   MsgBox ("No Files Found")
   Exit Sub
end if
Run Code Online (Sandbox Code Playgroud)