VBA:单行if语句具有多个操作

NoN*_*123 13 excel vba

我确实应该可以在Google上搜索到该内容,但找不到我想知道的内容。

我想检查文件是否存在。如果不是,则应弹出一个MessageBox,VBA应该退出该子程序。

If Dir("C:\file.txt", vbDirectory) = "" Then 
    MsgBox "File doesn't exist"
    Exit Sub
End If
Run Code Online (Sandbox Code Playgroud)

它有效,我只想知道是否可以在一行语句中执行此操作?如果应该发生一件以上的事情(例如此处的情况),VBA是否允许这样做?该代码不起作用(语法错误):

If Dir("C:\file.txt", vbDirectory) = "" Then  MsgBox "File doesn't exist" And Exit Sub
Run Code Online (Sandbox Code Playgroud)

Zam*_*mar 14

你绝对可以!

If Dir("C:\file.txt", vbDirectory) = "" Then  MsgBox "File doesn't exist" : Exit Sub
Run Code Online (Sandbox Code Playgroud)


Raw*_*lus 11


  • 然后,将代码串联在一起的另一种方式是与,:后者?在编译器中充当新行。

    这是变量声明中相当普遍的做法:

    Dim x As Integer: x = 42
    
    Run Code Online (Sandbox Code Playgroud)

现在,让我们一起应用这些步骤:

  1. 原始代码

    If Dir("C:\file.txt", vbDirectory) = "" Then 
       MsgBox "File doesn't exist"
       Exit Sub
    End If
    
    Run Code Online (Sandbox Code Playgroud)
  2. 应用单行 If语法

    If Dir("C:\file.txt", vbDirectory) = "" Then MsgBox "File Doesn't Exist"
    Exit Sub
    
    Run Code Online (Sandbox Code Playgroud)
  3. 使用:符号放入Exit Sub单行If

    If Dir("C:\file.txt", vbDirectory) = "" Then MsgBox "File Doesn't Exist" : Exit Sub
    
    Run Code Online (Sandbox Code Playgroud)


Lou*_*uis 6

在 VBA 中,您甚至可以在一行中执行两行以上的代码,只需:在一条指令和另一条指令之间添加即可!这是完全合法的:

If True Then MsgBox "True - Line 1": MsgBox "True - Line 2": Exit Sub
Run Code Online (Sandbox Code Playgroud)