VBA: однострочный оператор if с несколькими действиями - PullRequest
13 голосов
/ 23 апреля 2019

Я действительно должен уметь это гуглить, но не могу найти то, о чем хочу знать.

Я хочу проверить, существует ли файл.Если нет, должен появиться 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

Ответы [ 4 ]

14 голосов
/ 23 апреля 2019

Вы абсолютно можете!

If Dir("C:\file.txt", vbDirectory) = "" Then  MsgBox "File doesn't exist" : Exit Sub
11 голосов
/ 23 апреля 2019
  • If оператор уже поддерживает однострочный синтаксис .
    Проще говоря, это означает, что мы можем иметь:

    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
    
4 голосов
/ 23 апреля 2019

В VBA вы можете выполнить даже более двух строк кода в одной, просто добавьте : между одной инструкцией и другой! Это совершенно законно:

If True Then MsgBox "True - Line 1": MsgBox "True - Line 2": Exit Sub
1 голос
/ 23 апреля 2019
If Dir("C:\file.txt", vbDirectory) = "" Then : MsgBox "File doesn't exist" : End If

Мне не хватает репутации, чтобы исправить ответ выше. : следует добавить между Then и вашим блоком действий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...