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

时间:2019-04-23 12:36:20

标签: excel vba

我确实应该可以在Google上搜索到它,但是我找不到我想知道的东西。

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

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

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

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

5 个答案:

答案 0 :(得分:14)

您绝对可以!

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

答案 1 :(得分:11)

  • If语句does already support single-line syntax
    简单来说,这意味着我们可以:

    1. If {boolean-expression} Then
         {execution}
      End If
      
    2. If {boolean-expression} Then {execution}
      
      • 请注意第二个选项缺少End If,因为在单行语法中已完全忽略了它。
      • 请记住,执行块只能包含一个语句

  • 然后,将代码连接在一起的另一种方法是使用:,它在编译器中充当新行

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

    Dim x As Integer: x = 42
    

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

  1. 原始代码

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

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

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

答案 2 :(得分:4)

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

If True Then MsgBox "True - Line 1": MsgBox "True - Line 2": Exit Sub

答案 3 :(得分:1)

If Dir("C:\file.txt", vbDirectory) = "" Then : MsgBox "File doesn't exist" : End If

我没有足够的声誉来解决以上问题。还应在:和您的操作块之间添加Then

答案 4 :(得分:0)

如果需要其他粒子,则切线为:

If i Mod 2 <> 0 Then debug.print "Odd" Else: debug.print "Even"