Vba excel if in one line

I really should be able to google this, but I can’t find what I wanna know about.

I want to check if a file exists. If not, a MessageBox should pop up and VBA should exit the sub.

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

It works, I just wanna know if you can you do this in a single line statement? Does VBA allow this when more than one thing is supposed to happen (like it is the case here)? This code doesn’t work (syntax error):

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

asked Apr 23, 2019 at 12:36

NoNameNo123's user avatar

10

You absolutely can!

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

answered Apr 23, 2019 at 12:39

Zamar's user avatar

ZamarZamar

4595 silver badges13 bronze badges

1

  • The If statement does already support single-line syntax.
    In simple terms this means, we can either have:

    1. If {boolean-expression} Then
         {execution}
      End If
      
    2. If {boolean-expression} Then {execution}
      
      • Note the lack of End If at the second option, as it’s fully omitted in single-line syntax
      • Also keep in mind, the execution block can only contain a single statement

  • Then, further way of concatenating the code together is with the : which acts as a new line in the compiler.

    This is fairly common practice in variable declaration:

    Dim x As Integer: x = 42
    

Now, let’s apply those steps together:

  1. The original code

    If Dir("C:file.txt", vbDirectory) = "" Then 
       MsgBox "File doesn't exist"
       Exit Sub
    End If
    
  2. Applying the single-line If syntax

    If Dir("C:file.txt", vbDirectory) = "" Then MsgBox "File Doesn't Exist"
    Exit Sub
    
  3. Use the : symbol to put Exit Sub into our single-line If

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

answered Apr 23, 2019 at 13:31

Samuel Hulla's user avatar

Samuel HullaSamuel Hulla

6,3477 gold badges34 silver badges66 bronze badges

7

In VBA you can execute even more than two lines of code in one, just add : between one instruction and the other! This is perfectly legal:

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

answered Apr 23, 2019 at 12:47

Louis's user avatar

LouisLouis

3,5722 gold badges9 silver badges18 bronze badges

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

I do not have enough reputation to fix the answer above. : should be added between Then and your action block as well.

answered Apr 23, 2019 at 12:46

IOviSpot's user avatar

IOviSpotIOviSpot

3162 silver badges19 bronze badges

5

If you need Else particule, sintaxis would be:

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

answered Dec 7, 2020 at 15:07

Ovichan's user avatar

Однострочная и многострочная конструкции оператора If…Then…Else и функция IIf, используемые в коде VBA Excel — синтаксис, компоненты, примеры.

Оператор If…Then…Else предназначен для передачи управления одному из блоков операторов в зависимости от результатов проверяемых условий.

Однострочная конструкция

Оператор If…Then…Else может использоваться в однострочной конструкции без ключевых слов Else, End If.

Синтаксис однострочной конструкции If…Then…

If [условие] Then [операторы]

Компоненты однострочной конструкции If…Then…

  • условие — числовое или строковое выражение, возвращающее логическое значение True или False;
  • операторы — блок операторов кода VBA Excel, который выполняется, если компонент условие возвращает значение True.

Если компонент условие возвращает значение False, блок операторов конструкции If…Then… пропускается и управление программой передается следующей строке кода.

Пример 1

Sub Primer1()

Dim d As Integer, a As String

d = InputBox(«Введите число от 1 до 20», «Пример 1», 1)

   If d > 10 Then a = «Число « & d & » больше 10″

MsgBox a

End Sub

Многострочная конструкция

Синтаксис многострочной конструкции If…Then…Else

If [условие] Then

[операторы]

ElseIf [условие] Then

[операторы]

Else

[операторы]

End If

Компоненты многострочной конструкции If…Then…Else:

  • условие — числовое или строковое выражение, следующее за ключевым словом If или ElseIf и возвращающее логическое значение True или False;
  • операторы — блок операторов кода VBA Excel, который выполняется, если компонент условие возвращает значение True;
  • пунктирная линия обозначает дополнительные структурные блоки из строки ElseIf [условие] Then и строки [операторы].

Если компонент условие возвращает значение False, следующий за ним блок операторов конструкции If…Then…Else пропускается и управление программой передается следующей строке кода.

Самый простой вариант многострочной конструкции If…Then…Else:

If [условие] Then

[операторы]

Else

[операторы]

End If

Пример 2

Sub Primer2()

Dim d As Integer, a As String

d = InputBox(«Введите число от 1 до 40», «Пример 2», 1)

   If d < 11 Then

      a = «Число « & d & » входит в первую десятку»

   ElseIf d > 10 And d < 21 Then

      a = «Число « & d & » входит во вторую десятку»

   ElseIf d > 20 And d < 31 Then

      a = «Число « & d & » входит в третью десятку»

   Else

      a = «Число « & d & » входит в четвертую десятку»

   End If

MsgBox a

End Sub

Функция IIf

Функция IIf проверяет заданное условие и возвращает значение в зависимости от результата проверки.

Синтаксис функции

IIf([условие], [если True], [если False])

Компоненты функции IIf

  • условие — числовое или строковое выражение, возвращающее логическое значение True или False;
  • если True — значение, которое возвращает функция IIf, если условие возвратило значение True;
  • если False — значение, которое возвращает функция IIf, если условие возвратило значение False.

Компоненты если True и если False могут быть выражениями, значения которых будут вычислены и возвращены.

Пример 3

Sub Primer3()

Dim d As Integer, a As String

Instr:

On Error Resume Next

d = InputBox(«Введите число от 1 до 20 и нажмите OK», «Пример 3», 1)

If d > 20 Then GoTo Instr

    a = IIf(d < 10, d & » — число однозначное», d & » — число двузначное»)

MsgBox a

End Sub

Пример 4
Стоит отметить, что не зависимо от того, выполняется условие или нет, функция IIf вычислит оба выражения в параметрах если True и если False:

Sub Primer4()

On Error GoTo Instr

Dim x, y

x = 10

y = 5

    MsgBox IIf(x = 10, x + 5, y + 10)

    MsgBox IIf(x = 10, x + 5, y / 0)

Exit Sub

Instr:

MsgBox «Произошла ошибка: « & Err.Description

End Sub


При нажатии кнопки «Cancel» или закрытии крестиком диалогового окна InputBox из первых двух примеров, генерируется ошибка, так как в этих случаях функция InputBox возвращает пустую строку. Присвоение пустой строки переменной d типа Integer вызывает ошибку. При нажатии кнопки «OK» диалогового окна, числа, вписанные в поле ввода в текстовом формате, VBA Excel автоматически преобразует в числовой формат переменной d. В третьем примере есть обработчик ошибок.


Содержание

  1. Оператор If. Then. Else (Visual Basic)
  2. Синтаксис
  3. Краткие ссылки на пример кода
  4. Компоненты
  5. Примечания
  6. Многострочный синтаксис
  7. синтаксис Single-Line
  8. Пример многострочный синтаксис
  9. Пример вложенного синтаксиса
  10. Пример синтаксиса Single-Line
  11. Использование операторов If. Then. Else
  12. Выполнение операторов, если условие равно True
  13. Выполнение определенных операторов, если условие равно True, и выполнение других операторов, если оно равно False
  14. Проверка второго условия, если первое условие равно False
  15. См. также
  16. Поддержка и обратная связь
  17. If. Then. Else statement
  18. Syntax
  19. Remarks
  20. Example
  21. See also
  22. Support and feedback
  23. VBA If, ElseIf, Else (Ultimate Guide to If Statements)
  24. VBA If Statement
  25. If Then
  26. End If
  27. ElseIF – Multiple Conditions
  28. If-Else
  29. Nested IFs
  30. VBA Coding Made Easy
  31. IF – Or, And, Xor, Not
  32. If Or
  33. If And
  34. If Xor
  35. If Not
  36. If Comparisons
  37. Comparing Text
  38. VBA If Like
  39. If Loops
  40. If Else Examples
  41. Check if Cell is Empty
  42. Check if Cell Contains Specific Text
  43. Check if cell contains text
  44. If Goto
  45. Delete Row if Cell is Blank
  46. If MessageBox Yes / No
  47. VBA If, ElseIf, Else in Access VBA
  48. VBA Code Examples Add-in

Оператор If. Then. Else (Visual Basic)

Выполняет ту или иную группу операторов в зависимости от значения выражения.

Синтаксис

Краткие ссылки на пример кода

В этой статье содержится несколько примеров, иллюстрирующих использование If . Then . Else Заявление:

Компоненты

condition
Обязательный. Выражение. Должен иметь значение True или False тип данных, который неявно преобразуется в Boolean .

Если выражение является переменной, допускающей Boolean значение NULL, результатом является Nothing, условие обрабатывается как если бы выражение было False , а ElseIf блоки вычисляются, если они существуют, или Else блок выполняется, если он существует.

Then
Обязательный в однострочный синтаксис; необязательный параметр в многострочный синтаксис.

statements
Необязательный элемент. Одна или несколько инструкций, следующих за If . Then которые выполняются при condition вычислении True .

elseifcondition
Требуется, если ElseIf он присутствует. Выражение. Должен иметь значение True или False тип данных, который неявно преобразуется в Boolean .

elseifstatements
Необязательный элемент. Одна или несколько инструкций, следующих за ElseIf . Then которые выполняются при elseifcondition вычислении True .

elsestatements
Необязательный элемент. Одна или несколько инструкций, выполняемых, если ни одно предыдущее condition выражение elseifcondition не имеет значения True .

End If
Завершает многострочный номер версии If . Then . Else Блок.

Примечания

Многострочный синтаксис

When an If . Then . Else statement is encountered, condition is tested. В противном случае condition True выполняются следующие Then инструкции. False В противном случае condition каждая ElseIf инструкция (при наличии) вычисляется в порядке. True elseifcondition При обнаружении инструкций, сразу после связанных ElseIf операторов выполняются. Если операторы отсутствуют elseifcondition True ElseIf или отсутствуют, выполняются следующие Else инструкции. После выполнения приведенных ниже Then ElseIf инструкций или Else выполнения выполнение продолжается с помощью следующей End If инструкции.

Else Оба ElseIf предложения являются необязательными. You can have as many ElseIf clauses as you want in an If . Then . Else statement, but no ElseIf clause can appear after an Else clause. If . Then . Else операторы могут быть вложены друг в друга.

В многострочный синтаксис оператор If должен быть единственным оператором в первой строке. Else Операторы ElseIf и End If операторы могут предшествовать только метке строки. Then . If . Else Блок должен заканчиваться оператором End If .

Выбор. Оператор Case может оказаться более полезным при вычислении одного выражения с несколькими возможными значениями.

синтаксис Single-Line

Вы можете использовать однострочный синтаксис для одного условия с кодом, чтобы выполнить его, если это так. Однако синтаксис с несколькими строками обеспечивает большую структуру и гибкость и упрощает чтение, обслуживание и отладку.

Что следует Then за ключевым словом, чтобы определить, является ли оператор одной строкой If . Если что-либо, отличное от комментария, появляется в Then той же строке, оператор обрабатывается как однострочный If оператор. Если Then он отсутствует, он должен быть началом нескольких строк If . Then . Else .

В синтаксисе с одной строкой можно выполнить несколько инструкций в результате If принятия решения . Then . Все операторы должны находиться в одной строке и разделяться двоеточиями.

Пример многострочный синтаксис

В следующем примере показано использование многострочный синтаксис If . Then . Else Заявление.

Пример вложенного синтаксиса

В следующем примере содержатся вложенные If . Then . Else Заявления.

Пример синтаксиса Single-Line

В следующем примере показано использование однострочного синтаксиса.

Источник

Использование операторов If. Then. Else

Используйте оператор If. Then. Else для выполнения определенного оператора или блока операторов в зависимости от значения условия. Операторы If. Then. Else могут быть вложены в любое необходимое число слоев.

Однако для удобства читаемости лучше использовать оператор Select Case вместо нескольких уровней вложенных операторов If. Then. Else.

Выполнение операторов, если условие равно True

Чтобы выполнить только один оператор, когда условие равно True, используйте однострочный синтаксис оператора If. Then. Else. В следующем примере показан однострочный синтаксис с ключевым словомElse.

Чтобы выполнить несколько строк кода, необходимо использовать многострочный синтаксис. Этот синтаксис включает оператор End If, как показано в примере ниже.

Выполнение определенных операторов, если условие равно True, и выполнение других операторов, если оно равно False

Используйте оператор If. Then. Else для определения двух блоков исполняемых операторов: один блок выполняется, если условие равно True, а другой блок выполняется, если условие равно False.

Проверка второго условия, если первое условие равно False

Можно добавить операторы ElseIf в оператор If. Then. Else для проверки второго условия, если первое условие равно False. Например, в следующей процедуре функция вычисляет бонус на основе классификации задания. Оператор, следующий за оператором Else, выполняется в том случае, если условия во всех операторах If и ElseIf равны False.

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

If. Then. Else statement

Conditionally executes a group of statements, depending on the value of an expression.

Syntax

If condition Then [ statements ] [ Else elsestatements ]

Or, you can use the block form syntax:

If condition Then
[ statements ]
[ ElseIf condition-n Then
[ elseifstatements ]]
[ Else
[ elsestatements ]]
End If

The If. Then. Else statement syntax has these parts.

Part Description
condition Required. One or more of the following two types of expressions:

A numeric expression or string expression that evaluates to True or False. If condition is Null, condition is treated as False.

An expression of the form TypeOf objectname Is objecttype. The objectname is any object reference, and objecttype is any valid object type. The expression is True if objectname is of the object type specified by objecttype; otherwise, it is False.

statements Optional in block form; required in single-line form that has no Else clause. One or more statements separated by colons; executed if condition is True.
condition-n Optional. Same as condition.
elseifstatements Optional. One or more statements executed if associated condition-n is True.
elsestatements Optional. One or more statements executed if no previous condition or condition-n expression is True.

Use the single-line form (first syntax) for short, simple tests. However, the block form (second syntax) provides more structure and flexibility than the single-line form and is usually easier to read, maintain, and debug.

With the single-line form, it is possible to have multiple statements executed as the result of an If. Then decision. All statements must be on the same line and separated by colons, as in the following statement:

A block form If statement must be the first statement on a line. The Else, ElseIf, and End If parts of the statement can have only a line number or line label preceding them. The block If must end with an End If statement.

To determine whether or not a statement is a block If, examine what follows the Then keyword. If anything other than a comment appears after Then on the same line, the statement is treated as a single-line If statement.

The Else and ElseIf clauses are both optional. You can have as many ElseIf clauses as you want in a block If, but none can appear after an Else clause. Block If statements can be nested; that is, contained within one another.

When executing a block If (second syntax), condition is tested. If condition is True, the statements following Then are executed. If condition is False, each ElseIf condition (if any) is evaluated in turn. When a True condition is found, the statements immediately following the associated Then are executed. If none of the ElseIf conditions are True (or if there are no ElseIf clauses), the statements following Else are executed. After executing the statements following Then or Else, execution continues with the statement following End If.

Select Case may be more useful when evaluating a single expression that has several possible actions. However, the TypeOf objectname Is objecttype clause can’t be used with the Select Case statement.

TypeOf cannot be used with hard data types such as Long, Integer, and so forth other than Object.

Example

This example shows both the block and single-line forms of the If. Then. Else statement. It also illustrates the use of If TypeOf. Then. Else.

Use the If TypeOf construct to determine whether the Control passed into a procedure is a text box.

See also

Support and feedback

Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

Источник

VBA If, ElseIf, Else (Ultimate Guide to If Statements)

In this Article

VBA If Statement

If Then

VBA If Statements allow you to test if expressions are TRUE or FALSE, running different code based on the results.

Let’s look at a simple example:

This tests if the value in Range A2 is greater than 0. If so, setting Range B2 equal to “Positive”

Note: When testing conditions we will use the =, >, , = comparison operators. We will discuss them in more detail later in the article.

Here is the syntax for a simple one-line If statement:

To make it easier to read, you can use a Line Continuation character (underscore) to expand the If Statements to two lines (as we did in the above picture):

End If

The above “single-line” if statement works well when you are testing one condition. But as your IF Statements become more complicated with multiple conditions, you will need to add an “End If” to the end of the if statement:

Here the syntax is:

The End If signifies the end of the if statement.

Now let’s add in an ElseIF:

ElseIF – Multiple Conditions

The ElseIf is added to an existing If statement. ElseIf tests if a condition is met ONLY if the previous conditions have not been met.

In the previous example we tested if a cell value is positive. Now we will also test if the cell value is negative with an ElseIf:

You can use multiple ElseIfs to test for multiple conditions:

Now we will add an Else:

The Else will run if no other previous conditions have been met.

We will finish our example by using an Else to indicate that if the cell value is not positive or negative, then it must be zero:

If-Else

The most common type of If statement is a simple If-Else:

Nested IFs

You can also “nest” if statements inside of each other.

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!

IF – Or, And, Xor, Not

Next we will discuss the logical operators: Or, And, Xor, Not.

If Or

The Or operator tests if at least one condition is met.

The following code will test if the value in Range A2 is less than 5,000 or greater than 10,000:

You can include multiple Ors in one line:

If you are going to use multiple Ors, it’s recommended to use a line continuation character to make your code easier to read:

If And

The And operator allows you to test if ALL conditions are met.

If Xor

The Xor operator allows you to test if exactly one condition is met. If zero conditions are met Xor will return FALSE, If two or more conditions are met, Xor will also return false.

I’ve rarely seen Xor used in VBA programming.

If Not

The Not operator is used to convert FALSE to TRUE or TRUE To FALSE:

Notice that the Not operator requires parenthesis surrounding the expression to switch.

The Not operator can also be applied to If statements:

If Comparisons

When making comparisons, you will usually use one of the comparison operators:

Comparison Operator Explanation
= Equal to
<> Not Equal to
> Greater than
>= Greater than or Equal to
If – Boolean Function

When build expressions for If Statements, you can also use any function that generates TRUE or False. VBA has a few of these functions:

Function Description
IsDate Returns TRUE if expression is a valid date
IsEmpty Check for blank cells or undefined variables
IsError Check for error values
IsNull Check for NULL Value
IsNumeric Check for numeric value

They can be called like this:

Excel also has many additional functions that can be called using WorksheetFunction. Here’s an example of the Excel IsText Function:

You can also create your own User Defined Functions (UDFs). Below we will create a simple Boolean function that returns TRUE. Then we will call that function in our If statement:

Comparing Text

You can also compare text similar to comparing numbers:

When comparing text, you must be mindful of the “Case” (upper or lower). By default, VBA considers letters with different cases as non-matching. In other words, “A” <> “a”.

If you’d like VBA to ignore case, you must add the Option Compare Text declaration to the top of your module:

After making that declaration “A” = “a”:

VBA If Like

The VBA Like Operator allows you to make inexact comparisons of text. Click the “Like Operator” link to learn more, but we will show a basic example below:

Here we’re using an asterisk “*” wildcard. The * stands for any number of any characters. So the above If statement will return TRUE. The Like operator is an extremely powerful, but often under-used tool for dealing with text.

If Loops

VBA Loops allow you to repeat actions. Combining IF-ELSEs with Loops is a great way to quickly process many calculations.

Continuing with our Positive / Negative example, we will add a For Each Loop to loop through a range of cells:

If Else Examples

Now we will go over some more specific examples.

Check if Cell is Empty

This code will check if a cell is empty. If it’s empty it will ignore the cell. If it’s not empty it will output the cell value to the cell to the right:

Check if Cell Contains Specific Text

The Instr Function tests if a string of text is found in another string. Use it with an If statement to check if a cell contains specific text:

Check if cell contains text

This code will test if a cell is text:

If Goto

You can use the result of an If statement to “Go to” another section of code.

Delete Row if Cell is Blank

If MessageBox Yes / No

With VBA Message Boxes you’re able to ask the user to select from several options. The Yes/No Message Box asks the user to select Yes or No. You can add a Yes / No Message Box to a procedure to ask the user if they would like to continue running the procedure or not. You handle the user’s input using an If statement.

Here is the Yes/No Message Box in practice:

VBA If, ElseIf, Else in Access VBA

The If, ElseIf and Else functions work exactly the same in Access VBA as in Excel VBA.

You can use an If statement to check if there are records in a Recordset.

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

Источник

Adblock
detector

In this Article

  • VBA If Statement
    • If Then
  • ElseIF – Multiple Conditions
  • Else
  • If-Else
  • Nested IFs
  • IF – Or, And, Xor, Not
    • If Or
    • If And
    • If Xor
    • If Not
  • If Comparisons
    • If – Boolean Function
    • Comparing Text
    • VBA If Like
  • If Loops
  • If Else Examples
    • Check if Cell is Empty
    • Check if Cell Contains Specific Text
    • Check if cell contains text
    • If Goto
    • Delete Row if Cell is Blank
    • If MessageBox Yes / No
  • VBA If, ElseIf, Else in Access VBA

VBA If Statement

vba else if statement

If Then

VBA If Statements allow you to test if expressions are TRUE or FALSE, running different code based on the results.

Let’s look at a simple example:

If Range("a2").Value > 0 Then Range("b2").Value = "Positive"

This tests if the value in Range A2 is greater than 0. If so, setting Range B2 equal to “Positive”

vba if then

Note: When testing conditions we will use the =, >, <, <>, <=, >= comparison operators. We will discuss them in more detail later in the article.

Here is the syntax for a simple one-line If statement:

If [test_expression] then [action]

To make it easier to read, you can use a Line Continuation character (underscore) to expand the If Statements to two lines (as we did in the above picture):

If [test_expression] then _
    [action]
If Range("a2").Value > 0 Then _
   Range("b2").Value = "Positive"

End If

The above “single-line” if statement works well when you are testing one condition. But as your IF Statements become more complicated with multiple conditions, you will need to add an “End If” to the end of the if statement:

If Range("a2").Value > 0 Then
  Range("b2").Value = "Positive"
End If

vba end if

Here the syntax is:

If [test_expression] then
  [action]
End If

The End If signifies the end of the if statement.

Now let’s add in an ElseIF:

ElseIF – Multiple Conditions

The ElseIf is added to an existing If statement. ElseIf tests if a condition is met ONLY if the previous conditions have not been met.

In the previous example we tested if a cell value is positive. Now we will also test if the cell value is negative with an ElseIf:

If Range("a2").Value > 0 Then
    Range("b2").Value = "Positive"
ElseIf Range("a2").Value < 0 Then
    Range("b2").Value = "Negative"
End If

vba elseif

You can use multiple ElseIfs to test for multiple conditions:

Sub If_Multiple_Conditions()

    If Range("a2").Value = "Cat" Then
        Range("b2").Value = "Meow"
    ElseIf Range("a2").Value = "Dog" Then
        Range("b2").Value = "Woof"
    ElseIf Range("a2").Value = "Duck" Then
        Range("b2").Value = "Quack"
    End If

End Sub

Now we will add an Else:

Else

The Else will run if no other previous conditions have been met.

We will finish our example by using an Else to indicate that if the cell value is not positive or negative, then it must be zero:

If Range("a2").Value > 0 Then
    Range("b2").Value = "Positive"
ElseIf Range("a2").Value < 0 Then
    Range("b2").Value = "Negative"
Else
    Range("b2").Value = "Zero"
End If

vba else

If-Else

The most common type of If statement is a simple If-Else:

Sub If_Else()
    If Range("a2").Value > 0 Then
        Range("b2").Value = "Positive"
    Else
        Range("b2").Value = "Not Positive"
    End If
End Sub

vba if else

Nested IFs

You can also “nest” if statements inside of each other.

Sub Nested_Ifs()
    If Range("a2").Value > 0 Then
        Range("b2").Value = "Positive"
    Else
        If Range("a2").Value < 0 Then
            Range("b2").Value = "Negative"
        Else
            Range("b2").Value = "Zero"
        End If
    End If
End Sub

nested ifs

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!

automacro

Learn More

IF – Or, And, Xor, Not

Next we will discuss the logical operators: Or, And, Xor, Not.

If Or

The Or operator tests if at least one condition is met.

The following code will test if the value in Range A2 is less than 5,000 or greater than 10,000:

If Range("a2").Value < 5000 Or Range("a2").Value > 10000 Then
    Range("b2").Value = "Out of Range"
End If

if or

You can include multiple Ors in one line:

If Range("a2").Value < 5000 Or Range("a2").Value > 10000 Or Range("a2").Value = 9999 Then
    Range("b2").Value = "Out of Range"
End If

If you are going to use multiple Ors, it’s recommended to use a line continuation character to make your code easier to read:

If Range("a2").Value < 5000 Or _
   Range("a2").Value > 10000 Or _
   Range("a2").Value = 9999 Then

       Range("b2").Value = "Out of Range"
End If

vba multiple ors

If And

The And operator allows you to test if ALL conditions are met.

If Range("a2").Value >= 5000 And Range("a2").Value <= 10000 Then
    Range("b2").Value = "In Range"
End If

vba if and

VBA Programming | Code Generator does work for you!

If Xor

The Xor operator allows you to test if exactly one condition is met. If zero conditions are met Xor will return FALSE, If two or more conditions are met, Xor will also return false.

I’ve rarely seen Xor used in VBA programming.

If Not

The Not operator is used to convert FALSE to TRUE or TRUE To FALSE:

Sub IF_Not()
    MsgBox Not (True)
End Sub

vba if not

Notice that the Not operator requires parenthesis surrounding the expression to switch.

The Not operator can also be applied to If statements:

If Not (Range("a2").Value >= 5000 And Range("a2").Value <= 10000) Then
    Range("b2").Value = "Out of Range"
End If

if not

If Comparisons

When making comparisons, you will usually use one of the comparison operators:

Comparison Operator Explanation
= Equal to
<> Not Equal to
> Greater than
>= Greater than or Equal to
< Less than
<= Less than or Equal to

However, you can also use any expression or function that results in TRUE or FALSE

If – Boolean Function

When build expressions for If Statements, you can also use any function that generates TRUE or False.  VBA has a few of these functions:

Function Description
IsDate Returns TRUE if expression is a valid date
IsEmpty Check for blank cells or undefined variables
IsError Check for error values
IsNull Check for NULL Value
IsNumeric Check for numeric value

They can be called like this:

If IsEmpty(Range("A1").Value) Then MsgBox "Cell Empty"

Excel also has many additional functions that can be called using WorksheetFunction. Here’s an example of the Excel IsText Function:

If Application.WorksheetFunction.IsText(Range("a2").Value) Then _ 
   MsgBox "Cell is Text"

You can also create your own User Defined Functions (UDFs). Below we will create a simple Boolean function that returns TRUE. Then we will call that function in our If statement:

Sub If_Function()

If TrueFunction Then
    MsgBox "True"
End If

End Sub

Function TrueFunction() As Boolean
    TrueFunction = True
End Function

vba if boolean function

Comparing Text

You can also compare text similar to comparing numbers:

Msgbox "a" = "b"
Msgbox "a" = "a"

When comparing text, you must be mindful of the “Case” (upper or lower).  By default, VBA considers letters with different cases as non-matching.  In other words, “A” <> “a”.

If you’d like VBA to ignore case, you must add the Option Compare Text declaration to the top of your module:

Option Compare Text

After making that declaration “A” = “a”:

Option Compare Text

Sub If_Text()
   MsgBox "a" = "A"
End Sub

AutoMacro | Ultimate VBA Add-in | Click for Free Trial!

VBA If Like

The VBA Like Operator allows you to make inexact comparisons of text. Click the “Like Operator” link to learn more, but we will show a basic example below:

Dim strName as String
strName = "Mr. Charles"

If strName Like "Mr*" Then
    MsgBox "True"
Else
    MsgBox "False"
End If

Here we’re using an asterisk “*” wildcard. The * stands for any number of any characters.  So the above If statement will return TRUE.  The Like operator is an extremely powerful, but often under-used tool for dealing with text.

If Loops

VBA Loops allow you to repeat actions. Combining IF-ELSEs with Loops is a great way to quickly process many calculations.

Continuing with our Positive / Negative example, we will add a For Each Loop to loop through a range of cells:

Sub If_Loop()
Dim Cell as Range

  For Each Cell In Range("A2:A6")
    If Cell.Value > 0 Then
      Cell.Offset(0, 1).Value = "Positive"
    ElseIf Cell.Value < 0 Then
      Cell.Offset(0, 1).Value = "Negative"
    Else
      Cell.Offset(0, 1).Value = "Zero"
     End If
  Next Cell

End Sub

vba else if statement

If Else Examples

Now we will go over some more specific examples.

Check if Cell is Empty

This code will check if a cell is empty. If it’s empty it will ignore the cell. If it’s not empty it will output the cell value to the cell to the right:

Sub If_Cell_Empty()

If Range("a2").Value <> "" Then
    Range("b2").Value = Range("a2").Value
End If

End Sub

vba if cell empty do nothing

AutoMacro | Ultimate VBA Add-in | Click for Free Trial!

Check if Cell Contains Specific Text

The Instr Function tests if a string of text is found in another string. Use it with an If statement to check if a cell contains specific text:

If Instr(Range("A2").value,"text") > 0 Then
  Msgbox "Text Found"
End If

Check if cell contains text

This code will test if a cell is text:

Sub If_Cell_Is_Text()

If Application.WorksheetFunction.IsText(Range("a2").Value) Then
    MsgBox "Cell is Text"
End If

End Sub

If Goto

You can use the result of an If statement to “Go to” another section of code.

Sub IfGoTo ()

    If IsError(Cell.value) Then
        Goto Skip
    End If

    'Some Code

Skip:
End Sub

Delete Row if Cell is Blank

Using Ifs and loops you can test if a cell is blank and if so delete the entire row.

Sub DeleteRowIfCellBlank()

Dim Cell As Range

For Each Cell In Range("A2:A10")
    If Cell.Value = "" Then Cell.EntireRow.Delete
Next Cell

End Sub

AutoMacro | Ultimate VBA Add-in | Click for Free Trial!

If MessageBox Yes / No

With VBA Message Boxes you’re able to ask the user to select from several options. The Yes/No Message Box asks the user to select Yes or No.  You can add a Yes / No Message Box to a procedure to ask the user if they would like to continue running the procedure or not. You handle the user’s input using an If statement.

Here is the Yes/No Message Box in practice:

vba yes no msgbox

Sub MsgBoxVariable()

Dim answer As Integer
answer = MsgBox("Do you want to Continue?", vbQuestion + vbYesNo)

  If answer = vbYes Then
    MsgBox "Yes"
  Else
    MsgBox "No"
  End If

End Sub

VBA If, ElseIf, Else in Access VBA

The If, ElseIf and Else functions work exactly the same in Access VBA as in Excel VBA.

You can use an If statement to check if there are records in a Recordset.

vba yes no msgbox

If you want to be an advanced VBA user then an IF statement is a must-learn. And, I believe that you are already familiar with the word IF and you are frequently using it as a worksheet function.

In VBA, IF works just like the same. Its basic idea is to perform a task when a condition is TRUE else do nothing or do something else. You can write simply as well as in complex conditions.

For understanding purposes, I have split it into three different parts.

  • A condition to test.
  • A task to perform if the condition is TRUE.
  • A task to perform if the condition is FALSE.

This is what it looks like in real life:

using VBA IF statement code in excel

In the above example, rain is a condition. If this condition is TRUE, the boy will open his umbrella and if the condition is FALSE he will wear his hat. Conditions are everywhere in our day-to-day life. But now, let’s back to our coding world and explore it.

Syntax: VBA IF

We have three different types of IF statements in VBA.

1. IF-Then

IF THEN is the simplest form of an IF statement. All we need to do is specify a condition to check and if that condition is TRUE it will perform a task. But, if that condition is FALSE it will do nothing and skip the line instantly.

Syntax

IF condition Then statement[s]

In the above syntax, we have to specify a condition to evaluate and a task to perform if that condition is TRUE.

Example

vba if statement using if then macro code

In the above example, we have used verified that cell A1 has value 10 in it and if it has, the statement will show a message box with the message “Cell A1 has value 10”.

Sub CheckValue()
If Range("A1").Value = 10 Then
MsgBox ("Cell A1 has value 10")
End Sub

2. IF-Then-Else

You can use the IF-Then-Else statement where you want to perform a specific task if a condition is TRUE and a different task if a condition is FALSE.

Syntax

IF Condition Then
Statement[s]
Else
Statement[s]
End If

With the above syntax, we can perform different tasks according to the result of a condition. If the condition is TRUE then it will perform the statement which you have mentioned after “Then” or if the condition is FALSE it will perform the statement which you have mentioned after “Else”.

Example

Sub CheckValue()
 If Range("A1").Value = "10" Then
     MsgBox ("Cell A1 has value 10")
 Else
     MsgBox ("Cell A1 has a value other than 10")
 End Sub
vba if statement using if then else macro code

In the above example, I have used the IF-Then-Else statement to check the value in cell A1.

If cell A1 has a value of 10, you will get a message box showing “Cell A1 has a value of 10” and if there is any other value in cell A1 you get a message box showing “Cell A1 has a value other than 10”. So, here we are able to perform different tasks according to the result of the condition.

3. IF-Then-Elseif-Else

This is the most useful and important type of IF which will help you to write advanced condition statements. In this type, you can specify the second condition after evaluating your first condition.

Syntax

IF Condition Then
Statement[s]
Elseif Condition Then
Statement[s]
Else
Statement[s]
End If

In the above syntax, we have:

  1. A condition to evaluate.
  2. A statement to perform if that condition is TURE.
  3. If that condition is FALSE then we have the second condition to evaluate.
  4. And, if the second condition is TRUE we have a statement to perform.
  5. But, if both conditions, first and second are FALSE then it will perform a statement that you have mentioned after “Else”.

And, the best part is you can use any number of “Elseif” in your code. That means you can specify any number of conditions in your statement.

Example

vba if statement using if then elseif else macro code
Sub check_grade()
 If Range("A2").Value = "A" Then
     MsgBox "Very Good"
 Else
 If Range("A2").Value = "B" Then
     MsgBox "Good"
 ElseIf Range("A2").Value = "C" Then
     MsgBox "Average"
 ElseIf Range("A2").Value = "D" Then
     MsgBox "Poor"
 ElseIf Range("A2").Value = "E" Then
     MsgBox "Very Poor"
 Else
     MsgBox "Enter Correct Grade"
 End Sub

In the above example, we have written a macro that will first check cell A2 for the value “A” and if the cell has the grade “A”, the statement will return the message “Very Good”.

This statement will first check cell A2 for value “A” and if the cell has the grade “A”, the statement will return the message “Very Good”.

And, if the first condition is FALSE then it will evaluate the second condition and return the message “Good” if the cell has a grade of “B”.

And, if the second condition is false then it will go to the third condition and so on. In the end, if all five conditions are false it will run the code which I have written after else.

The secret about writing an IF statement in VBA

Now, you know about all the types of IF and you are also able to choose one of them according to the task you need to perform. Let me tell you a secret.

One Line IF statement Vs. Block IF statement

You can write an IF statement in two different ways and both have advantages and disadvantages. Have a look.

1. One Line Statement

The one-line statement is perfect if you are using the IF-Then statement. The basic to use one line statement is to write your entire code in one line.

If A1 = 10 Then Msgbox("Cell A1 has value 10")

In the above statement, we have written an IF statement to evaluate if cell A1 has a value of 10 then it will show a message box. The best practice to use one line statement is when you have to write a simple code. Using one-line code for complex and lengthy statements is hard to understand.

[icon name=”lightbulb-o” unprefixed_] Quick Tip: While writing single-line code you don’t need to use Endif to end the statement.

2. Block Statement

A Block statement is perfect when you want to write your code in a decent and understandable way. When you writing a block statement you can use multiple lines in your macro which give you a neat and clean code.

Sub check_value()
 If Range(“A1”).Value = “10” Then
     MsgBox ("Cell A1 has value 10")
 Else
     MsgBox ("Cell A1 has a value other than 10")
 End If
 End Sub

In the above example, we have written an IF-Then-Else statement in blocks. And, you can see that it is easy to read and even easy to debug.

When you will write complex statements (which you will definitely do after reading this guide) using block statements are always good. And, while writing nested If statements you can also add indentation in your line for more clarity.

[icon name=”lightbulb-o” unprefixed_] Quick Tip – You have an exception that you can skip using Else at the end of your code when you are using IF-Then-Elseif-Else. This is very helpful when you do not need to perform any task when none of the conditions is TRUE in your statement.

8 Real Life Examples

Here I have listed some simple but useful examples which you can follow along.

1. Nested IF

The best part of the IF statement is you create nesting statements. You can add a second condition in the first condition.

writing nesting if with vba if statement
Sub NestIF()
 Dim res As Long
 res = MsgBox("Do you want to save this file?", vbYesNo, "Save File")
 If res = vbYes Then 'start of first IF statement
     If ActiveWorkbook.Saved <> True Then 'start of second IF statement.
         ActiveWorkbook.SaveMsgBox ("Workbook Saved")
     Else
         MsgBox "This workbook is already saved"
     End If 'end of second IF statement
 Else
     MsgBox "Make Sure to save it later"
 End If ' end of first IF statement
 End Sub

In the above example, we have used a nested IF statement. When you run this macro you will get a message box with the OK and Cancel options. Work of conditional statement starts after that.

First, it will evaluate which button you have clicked. If you clicked “Yes” then nest it will evaluate whether your worksheet is saved or not.

If your workbook is not saved, it will save it and you will get a message. And, if the workbook is already saved it will show a message about that.

But, If you click on the button the condition of the first macro will be FALSE and you will only get a message to save your book later.

The basic idea in this code is that the second condition is totally dependent on the first condition if the first condition is FALSE then the second condition will not get evaluated.

More on Nested IF

2. Create Loop With IF and GoTo

You can also create a loop by using goto with IF. Most programmers avoid writing loops this way as we have better ways for a loop. But there is no harm to learn how we can do this.

Sub auto_open()
 Alert: If InputBox("Enter Username") <> "Puneet" Then
 GoTo Alert
 Else
 MsgBox "Welcome"
 End If
End Sub

In the above example, we have used a condition statement to create a loop. We have used auto_open as the name of the macro so that whenever anyone opens the file it will run that macro.

The user needs to enter a username and if that username is not equal to “Puneet” it will repeat the code and show the input box again. And, if you enter the right text then he/she will be able to access the file.

3. Check if a Cell Contains a Number

Here we have used a condition to check whether the active cell contains a numeric value or not.

using vba if statement to check number in cell
Sub check_number()
 If IsNumeric(Range("B2").Value) Then
     MsgBox "Yes, active cell has a number."
 Else
     MsgBox "No, active cell hasn't a number."
 End If
 End Sub

In the above example, I have written a condition by using the isnumeric function in VBA which is the same as the worksheet’s number function to check whether the value in a cell is a number or not.

If the value is a number it will return TRUE and you will get a message “Yes, Active Cell Has A Numeric Value”. And, if the value is non-number then you will get a message “No Numeric Value In Active Cell”.

4. Using OR and AND With IF

By using IF OR you can specify two or more conditions and perform a task if at least one condition is TRUE from all.

Sub UsingOR()
 If Range("A1") < 70 Or Range("B1") < 70 Then
     MsgBox "You Are Pass"
 Else
     If Range("A1") < 40 And Range("B1") < 40 Then
         MsgBox "You Are Pass"
     Else
         MsgBox "You Are Fail"
     End If
 End If
 End Sub

In the above example, in line 2, we have two conditions using the OR. If a student gets 70 marks in any of the subjects the result will be a “Pass”. And on line 7, we have two conditions using the AND operator. If a student gets more than 40 marks in both of the subjects the result will be “Pass”.

By using the IF AND you can specify more than one condition and perform a task if all the conditions are TRUE.

5. Using Not With IF

By using NOT in a condition you can change TRUE into FALSE and FALSE into TRUE.

VBA IF Not

Sub IF_Not()
     If Range(“D1”) <= 40 And Not Range(“E1”) = “E” Then
         MsgBox "You Are Pass."
     Else
         MsgBox "You Are Fail."
     End If
 End Sub

In the above example, we have used NOT in the condition. We have two cell with the subject score. In one cell score is in numbers and in another cell it has grades.

  • If a student has marks above 40 in the first subject and above E grade in the second subject then he/she is a PASS.
  • If a student has marks above 40 in the first subject and above E grade in the second subject then he/she is PASS.

So every time when a student’s marks are more than 40 and a grade other than E we will get a message “You are Pass” or else “You are Fail”.

6. IF Statement With a Checkbox

Now, here we are using a checkbox to run a macro.

using vba if statement with checkbox
Sub ship_as_bill()
 If Range("D15") = True Then
     Range("D17:D21") = Range("C17:C21")
 Else
     If Range(“D15”) = False Then
         Range("D17:D21").ClearContents
     Else
         MsgBox (“Error!”)
     End If
 End If
 End Sub

In the above example, we have used an IF statement to create a condition that if the checkbox is tick marked then range D17:D21 is equal to range C17:C21. And, if the checkbox is not ticked then range D17:D21 will be blank.

Using this technique we can use the billing address as the shipping address and if we need something else we can enter the address manually.

7. Check if a Cell is Merged

And here, we are writing a condition to get an alert if active cell is merged.

check if a cell is merged using vba if statement
Sub MergeCellCheck()
If ActiveCell.MergeCells Then
MsgBox "Active Cell Is Merged"
Else
MsgBox "Active Cell Is Not Merged"
End If
End Sub

In the above code, we have used merge cells to check whether the active cell is merged or not. If the active cell is merged then the condition will return an alert for that.

8. Delete the Entire Row if a Cell is Blank

Here we are using IF to check whether a row is blank or not. And, if that row is blank statement will delete that particular row.

Sub DeleteRow()
If Application.CountA(ActiveCell.EntireRow) = 0 Then
 ActiveCell.EntireRow.Delete
Else
 MsgBox Application.CountA(ActiveCell.EntireRow) & "Cell(s) have values in this row"
End If
End Sub

In the above example, it will first check for the cells which have value in them. If the count of cells with a value is zero then the condition will delete the active row else return the alert showing the number of cells having value.

Conclusion

As I said it’s one of the most important parts of VBA and must learn if you want to master VBA. With the IF statement, you can write simple codes as well as complex codes. You can also use logical operators and write nested conditions.

I hope this guide will help you to write better codes.

Now tell me this. Do you write conditions in VBA frequently? What kind of codes do you write? Please share your views with me in the comment section. And, please don’t forget to share this guide with your friends.

Related: Exit IF

Понравилась статья? Поделить с друзьями:
  • Vba excel if exists file
  • Vba excel if elseif
  • Vba excel find and select
  • Vba excel find all cells
  • Vba excel filtered rows