Как использовать оператор if с else в vba?

Если вы хотите быть продвинутым пользователем VBA, оператор IF является обязательным. Я думаю, вы уже знаете слово ЕСЛИ и часто используете его в качестве функции электронной таблицы.

В VBA IF работает таким же образом. Его основная идея — выполнить задачу, когда условие истинно, в противном случае ничего не делать или делать что-то еще. Писать можно как просто, так и в сложных условиях.

Для понимания я разделил его на три разные части.

  • Предоставлен на тестирование.
  • Задача, которую необходимо выполнить, если условие истинно.
  • Задача, которую необходимо выполнить, если условие ЛОЖЬ.

Вот как это выглядит в реальной жизни:

использование кода оператора VBA IF в Excel

В приведенном выше примере дождь является условием. Если это условие ИСТИНА, мальчик откроет зонтик, а если условие ЛОЖЬ, он наденет шляпу. Условия вездесущи в нашей повседневной жизни. Но теперь давайте вернемся в наш мир кодирования и исследуем его.

Синтаксис: VBA ЕСЛИ

В VBA есть три разных типа операторов IF.

1. ЕСЛИ-То

IF THEN — это простейшая форма оператора IF. Все, что нам нужно сделать, это указать условие для проверки, и если это условие истинно, оно выполнит задачу. Но если это условие ЛОЖНОЕ, оно ничего не сделает и мгновенно перейдет линию.

Синтаксис

 IF condition Then statement[s]

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

Пример

Оператор vba if с использованием кода макроса if then

В приведенном выше примере мы проверили, что ячейка A1 содержит значение 10, и если это так, оператор отобразит окно сообщения с сообщением «Ячейка A1 имеет значение 10».

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

2. ЕСЛИ-то-иначе

Вы можете использовать оператор IF-Then-Else, когда хотите выполнить определенную задачу, если условие имеет значение TRUE, и другую задачу, если условие имеет значение FALSE.

Синтаксис

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

Используя приведенный выше синтаксис, мы можем выполнять различные задачи в зависимости от результата условия. Если условие ИСТИНА, оно выполнит оператор, который вы упомянули после «Тогда», или если условие ЛОЖЬ, оно выполнит оператор, который вы упомянули после «Иначе».

Пример

 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 с использованием кода макроса if then else

В приведенном выше примере я использовал оператор IF-Then-Else для проверки значения в ячейке A1.

Если ячейка A1 имеет значение 10, вы получите окно сообщения с надписью «Ячейка A1 имеет значение 10», а если в ячейке A1 есть другое значение, вы получите окно сообщения с надписью «Ячейка A1 имеет значение, отличное от 10». Итак, здесь мы можем выполнять различные задачи в зависимости от результата условия.

3. ЕСЛИ-То-Иначеесли-Иначе

Это наиболее полезный и важный тип IF, который поможет вам писать расширенные операторы условий. В этом типе вы можете указать второе условие после оценки первого условия.

Синтаксис

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

В приведенном выше синтаксисе мы имеем:

  1. При условии оценки.
  2. Инструкция для выполнения, если это условие TURE.
  3. Если это условие ЛОЖЬ, то нам нужно оценить второе условие.
  4. И если второе условие истинно, нам нужно сделать объявление.
  5. Но если оба условия, первое и второе, являются ЛОЖНЫМИ, будет сделано утверждение, которое вы упомянули после «Иначе».

И самое приятное то, что вы можете использовать любое количество Elseif в своем коде. Это означает, что вы можете указать любое количество условий в своем объявлении.

Пример

Оператор vba if с использованием кода макроса if then elseif elseif
 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

В приведенном выше примере мы написали макрос, который сначала проверит ячейку A2 на наличие значения «A», и если ячейка имеет рейтинг «A», оператор вернет сообщение «Очень хорошо».

Эта инструкция сначала проверит ячейку A2 на наличие значения «A», и если ячейка имеет рейтинг «A», инструкция вернет сообщение «Очень хорошо».

И если первое условие ЛОЖЬ, оно оценит второе условие и вернет сообщение «Хорошо», если ячейка имеет рейтинг «B».

И если второе условие ложно, оно перейдет к третьему условию и так далее. В конечном итоге, если все пять условий ложны, код, который я написал, будет выполнен после остальных.

Секрет написания оператора IF в VBA

Теперь вы знаете все виды ИС и также можете выбрать одну в зависимости от задачи, которую необходимо выполнить. Позвольте мне открыть вам секрет.

Однострочный оператор IF и блочный оператор IF

Вы можете написать оператор IF двумя разными способами, и оба имеют свои преимущества и недостатки. Посмотри на.

1. Однострочное заявление

Однострочный оператор идеален, если вы используете оператор IF-Then. Основой использования оператора line является запись всего кода в одной строке.

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

В приведенном выше операторе мы написали оператор IF, чтобы оценить, имеет ли ячейка A1 значение 10, после чего отобразится окно сообщения. Лучше всего использовать однострочный оператор, когда вам нужно написать простой код. Использование однострочного кода для сложных и длинных объявлений сложно понять.

Совет: при написании однострочного кода вам не нужно использовать Endif для завершения оператора.

2. Объявление блока

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

 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

В приведенном выше примере мы записали оператор IF-Then-Else в блоках. И вы можете видеть, что его легко читать и даже легко отлаживать.

При написании сложных инструкций (что вы обязательно сделаете после прочтения этого руководства) блочные инструкции всегда хороши. И при написании вложенных операторов If вы также можете добавить отступ в строке для ясности.

Совет . У вас есть исключение, которое вы можете игнорировать, используя Else в конце кода, когда используете IF-Then-Elseif-Else. Это очень полезно, когда вам не нужно выполнять какую-либо задачу, если ни одно из условий в вашем операторе не является TRUE.

8 конкретных примеров

Здесь я перечислил несколько простых, но полезных примеров, которым вы можете следовать.

1. Вложенный ЕСЛИ

Лучшая часть оператора IF заключается в том, что вы создаете вложенные операторы. К первому условию можно добавить второе.

написание вложения if с оператором vba if
 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

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

Сначала он оценит кнопку, которую вы нажали. Если вы нажали «Да», вложите его, чтобы оценить, сохранена ли ваша таблица или нет.

Если ваша книга не сохранена, она сохранит ее, и вы получите сообщение. И, если книга уже сохранена, появится сообщение об этом.

Но если вы нажмете кнопку, условие первого макроса будет ЛОЖНЫМ, и вы получите только сообщение о необходимости сохранить книгу позже.

Основная идея этого кода заключается в том, что второе условие полностью зависит от первого условия. Если первое условие имеет значение FALSE, то второе условие не будет оцениваться.

Узнайте больше о вложенном IF.

2. Создайте цикл с IF и GoTo.

Вы также можете создать цикл, используя goto с IF. Большинство программистов избегают написания циклов таким способом, потому что у нас есть лучшие способы создания циклов . Но нет никакого вреда в том, чтобы узнать, как мы можем это сделать.

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

В приведенном выше примере мы использовали оператор условия для создания цикла. Мы использовали auto_open в качестве имени макроса, чтобы каждый раз, когда кто-то открывает файл, запускался этот макрос.

Пользователь должен ввести имя пользователя, и если это имя пользователя не равно «Puneet», он повторит код и снова отобразит поле ввода. И, если вы введете правильный текст, он сможет получить доступ к файлу.

3. Проверьте, содержит ли ячейка число

Здесь мы использовали условие, чтобы проверить, содержит ли активная ячейка числовое значение или нет.

используйте оператор vba if для проверки числа в ячейке
 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

В приведенном выше примере я написал условие, используя функцию isnumeric в VBA, которая аналогична числовой функции на листе, чтобы проверить, является ли значение ячейки числом или нет.

Если значение является числом, оно вернет TRUE, и вы получите сообщение «Да, активная ячейка имеет числовое значение». А если значение не является числом, вы получите сообщение «Нет числового значения в активной ячейке».

4. Используйте ИЛИ и И с ЕСЛИ.

Используя ЕСЛИ ИЛИ, вы можете указать два или более условий и выполнить задачу, если хотя бы одно условие среди всех истинно.

 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

В приведенном выше примере в строке 2 у нас есть два условия с использованием ИЛИ. Если студент наберет 70 баллов по любому из предметов, результатом будет «Зачет». А в строке 7 у нас есть два условия с использованием оператора AND. Если учащийся наберет более 40 баллов по обоим предметам, результатом будет «Зачет».

Используя ЕСЛИ И, вы можете указать несколько условий и выполнить задачу, если все условия ИСТИНА.

5. Используйте Not с ЕСЛИ

Используя NOT в условии, вы можете изменить TRUE на FALSE и FALSE на TRUE.

VBA, ЕСЛИ НЕТ

 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

В приведенном выше примере мы использовали NOT в условии. У нас есть две ячейки со счетом испытуемого. В одной ячейке балл указывается в цифрах, а в другой — оценки.

  • Если учащийся имеет оценки выше 40 по первому предмету и выше оценки E по второму предмету, это PASS.
  • Если учащийся имеет оценки выше 40 по первому предмету и выше оценки E по второму предмету, он считается ПРОЙДЕННЫМ.

Таким образом, каждый раз, когда оценки учащегося превышают 40 и получают оценку, отличную от E, мы получаем сообщение «Вы прошли» или «Вы не прошли».

6. Объявление IF с флажком

Теперь здесь мы используем флажок для запуска макроса.

использование оператора vba if с флажком
 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

В приведенном выше примере мы использовали оператор IF для создания условия, при котором, если флажок установлен, диапазон D17:D21 равен диапазону C17:C21. И если флажок не установлен, диапазон D17:D21 будет пустым.

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

7. Проверьте, объединена ли ячейка

И здесь мы пишем условие для получения оповещения, если активная ячейка объединена.

проверьте, объединена ли ячейка, с помощью оператора vba if
 Sub MergeCellCheck() If ActiveCell.MergeCells Then MsgBox "Active Cell Is Merged" Else MsgBox "Active Cell Is Not Merged" End If End Sub

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

8. Удалить всю строку, если ячейка пуста.

Здесь мы используем IF, чтобы проверить, пуста ли строка или нет. И если эта строка пуста, оператор удалит именно эту строку.

 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

В приведенном выше примере сначала проверяются ячейки, имеющие значение. Если количество ячеек со значением равно нулю, условие удалит активную строку, в противном случае вернет оповещение с указанием количества ячеек со значением.

Заключение

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

Я надеюсь, что это руководство поможет вам писать более качественные коды.

Теперь скажи мне это. Вы часто пишете условия в VBA? Какие коды вы пишете? Пожалуйста, поделитесь со мной своим мнением в разделе комментариев. И не забудьте поделиться этим руководством со своими друзьями.

Что такое ВБА

Связанные руководства

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *