Якщо тоді інше висловлювання у Excel VBA (пояснено з прикладами)

У Excel VBA, IF Then Else оператор дозволяє перевірити наявність стану та виконати відповідну дію.

Це надзвичайно цінно в багатьох ситуаціях, як ми побачимо в прикладах далі в цьому підручнику.

Щоб навести вам простий приклад, припустимо, що у вас є список оцінок у Excel, і ви хочете виділити всіх тих студентів, які набрали оцінку А. Тепер, якщо я попрошу вас зробити це вручну, ви перевірите оцінку кожного учня та a, ви виділите його, а якщо ні, то залиште як є.

Таку ж логіку можна побудувати у VBA за допомогою Якщо Тоді Інше також (і, звичайно, роблять набагато більше, ніж просто виділяють оцінки).

У цьому підручнику я покажу вам різні способи використання конструкції "Якщо ще інше" в Excel VBA та деякі практичні приклади в дії.

Але перш ніж я перейду до деталей, дозвольте мені дати вам синтаксис оператора "IF If Else".

Якщо ви зацікавлені у вивченні VBA простим способом, ознайомтеся з моїм Онлайн навчання Excel VBA.

Синтаксис - IF Тоді інше

Нижче наведено загальний синтаксис конструкції If Then Else у VBA

Якщо умова Тоді true_code [В іншому false_code]

Або

IF умова Тоді true_code В іншому false_code Кінець IF

Зауважте, що інша частина цього твердження є необов’язковою.

Тепер, якщо вам цікаво, у чому різниця між цими синтаксисами, дозвольте мені уточнити.

Перший синтаксис-це простий однорядковий оператор IF THEN ELSE, де вам не потрібно використовувати оператор END IF.

Однак у другому синтаксисі частина true_code знаходиться у другому рядку. Це корисно, коли код, який потрібно запустити, якщо умова IF істинна, довгий і складається з декількох рядків.

Коли ви розділяєте оператор IF на кілька рядків, вам потрібно повідомити VBA, де закінчується конструкція IF Then.

Отже, вам потрібно використовувати оператор End IF.

Якщо ви не використовуєте End IF, коли це потрібно, VBA покаже вам помилку - "Блокувати IF без END IF"

Приклади використання оператора IF then у VBA

Щоб дати вам уявлення про те, як оператор IF-THEN працює у VBA, дозвольте мені почати з кількох базових прикладів (деякі практичні та більш корисні приклади розглянуті далі в цьому підручнику).

Припустимо, у вас є оцінка студента у клітинці А1, і ви хочете перевірити, чи студент склав іспит чи ні (поріг проходження балів становить 35).

Тоді ви можете використовувати наступний код:

Sub CheckScore () Якщо Діапазон ("A1"). Значення> = 35 Тоді MsgBox "Pass" End Sub

Наведений вище код містить єдиний рядок оператора IF, який перевіряє значення в комірці A1.

Якщо їх більше 35, на ньому відображається повідомлення - «Пройти».

Якщо менше 35, нічого не відбувається.

Але що робити, якщо ви хочете показати повідомлення в обох випадках, незалежно від того, чи студент склав або не склав іспит.

Нижче наведений код зробить це:

Sub CheckScore () Якщо Діапазон ("A1"). Значення> = 35 Тоді MsgBox "Pass" В іншому випадку MsgBox "Fail" Завершення, якщо End Sub

У наведеному вище коді використовується IF, а також оператор ELSE для виконання двох різних умов. Коли оцінка більше (або дорівнює) 35, умова IF є істинною, і код під нею виконується (все перед оператором Else).

Але коли умова IF FALSE, код переходить до частини Else і виконує в ній блок коду.

Зауважте, що коли ми використовуємо один рядок оператора IF Then, нам не потрібно використовувати End IF. Але коли ми розділяємо його на кілька рядків, нам потрібно використовувати оператор End If.

Вкладений IF Тоді (Кілька операторів IF Тоді)

Поки що ми використовували єдиний оператор IF Then.

Якщо у вас є кілька умов для перевірки, ви можете використовувати:

  • Кілька умов IF
  • Якщо тоді інше
  • IF Тоді ElseIf Else побудуйте

Дозвольте мені показати, чим вони відрізняються і як це використовувати в Excel VBA.

Кілька операторів IF тоді

Візьмемо той самий приклад використання балів учня.

Якщо учень набрав менше 35 балів, відобразиться повідомлення «Невдало», якщо оцінка більше або дорівнює 35, відобразиться повідомлення «Успішно».

Для цього ми можемо використати код нижче:

Sub CheckScore () Якщо Діапазон ("A1"). Значення = 35 Тоді MsgBox "Pass" End Sub

Ви можете використовувати декілька операторів IF Then, як показано вище. Хоча це працює, це не приклад хорошого кодування (як ви побачите альтернативи нижче).

Якщо ви вирішили використати це, пам’ятайте, що ці заяви повинні бути незалежними або взаємовиключними. Тут важливо знати, що у наведеній вище конструкції всі оператори IF оцінюються, а ті, де умова істинна, виконується.

Отже, навіть якщо перше твердження IF правильне, друге все одно оцінюватиметься.

IF Тоді інше висловлювання

Припустимо, що цього разу, замість того, щоб просто відображати повідомлення проходження/невдачі, ми маємо ще одну умову.

Якщо учень набрав менше 35 балів, відобразиться повідомлення «Невдало», якщо оцінка більше або дорівнює 35, відобразиться повідомлення «Успішно», а якщо оцінка більше 80, відобразиться повідомлення це "Пропуск, з відзнакою".

Для цього ми можемо використати код нижче:

Sub CheckScore () Якщо Діапазон ("A1"). Значення <35 Тоді MsgBox "Не вдається" Інший Якщо Діапазон ("A1"). Значення <80 Тоді MsgBox "Проходить" Ще Підп

У наведеному вище коді ми використовували кілька операторів IF (вкладених IF Then) за допомогою Else.

Отже, існує конструкція "IF then Else" у конструкції "IF Then Else". Цей тип вкладеності дозволяє перевірити наявність декількох умов та запустити відповідний блок коду.

IF Тоді інше Заява Else

Наведений вище код (який ми бачили у попередньому розділі) можна додатково оптимізувати за допомогою оператора ElseIf.

Ось що ми намагаємось зробити - якщо учень набрав менше 35 балів, відобразиться повідомлення "Невдало", якщо оцінка більше або дорівнює 35, відобразиться повідомлення "Успішно", а якщо оцінка більше 80, повідомлення для відображення: "Пройдіть, з відзнакою".

Sub CheckScore () Якщо діапазон ("A1"). Значення <35 Тоді MsgBox "Fail" Інший діапазон ("A1"). Значення <80 Тоді MsgBox "Pass" Інше MsgBox "Pass, з відмінністю" End If End Sub

У наведеному вище коді використовується ElseIf, що дозволяє нам зберігати всі умови в одному єдиному операторі IF Then.

Використання AND та OR у IF Тоді інше

Поки що в цьому підручнику ми перевіряли лише одну умову одночасно.

Однак, коли у вас є кілька залежних умов, ви можете використовувати оператор AND або OR з умовами IF.

Нижче наведено синтаксис використання умови AND/OR з оператором IF Then.

IF Умова1 І Умова2 Тоді true_code В іншому false_code Кінець IF

У наведеному вище коді виконується true_code лише тоді, коли виконуються обидва умови1 та умова2. Навіть якщо одна з умов є хибною, вона виконає false_code.

З OR, навіть якщо одна з умов відповідає істині, вона виконуватиме код true_code. Лише коли всі умови є хибними, він виконує false_code.

Тепер подивимося, як оператор AND та OR працює з конструкцією IF Then Else.

Припустимо, у вас є оцінки з двох предметів замість одного, і ви хочете перевірити такі умови:

  • Невдача - Коли оцінка менше 35 з будь -якого предмета.
  • Пройти - Коли оцінка більше або дорівнює 35, але менше 80 у обох предметах.
  • Передайте, з відзнакою - Коли оцінка більше 35 в обох предметах і більше або дорівнює 80 в одному або обох предметах.

Ось код, який буде це робити:

Sub CheckScore () Якщо Діапазон ("A1"). Значення <35 Або Діапазон ("B1"). Значення <35 Тоді MsgBox "Не вдається" Інший діапазон ("A1"). Значення <80 І Діапазон ("B1"). Значення <80 Тоді MsgBox "проходить" Інше MsgBox "проходить, з відмінністю" End If End Sub

У наведеному вище коді використовуються як оператори OR, так і AND.

Ви також можете написати цей самий код з невеликими змінами (використовуючи OR замість AND).

Sub CheckScore () Якщо діапазон ("A1"). Значення <35 або діапазон ("B1"). Значення 80 або діапазон ("B1"). Значення> 80 Тоді MsgBox "Pass, з відмінністю" Else MsgBox "Pass" End Якщо End Sub

Обидва вищевказані коди VBA дадуть вам однаковий результат. Особисто я віддаю перевагу першому, оскільки він має логічний потік перевірки балів (але це тільки я).

Використовуючи Не дорівнює в Якщо Тоді

У всіх наведених вище прикладах ми використовували умови, які перевіряють, чи дорівнює значення певному значенню чи ні.

Ви також можете використовувати подібні коди під час перевірки, коли значення не дорівнює зазначеному значенню у коді VBA. Не дорівнює представленому Excel VBA.

Щоб побачити практичний приклад використання, подивіться на Приклад 1 нижче.

Використання If If Else з циклами у VBA

Поки що ми проходили через деякі приклади, які добре зрозуміли, як заяви "IF-THEN" працюють у VBA, проте вони не є корисними у практичному світі.

Якщо мені потрібно оцінити учнів, я можу це легко зробити за допомогою функцій Excel.

Тож давайте подивимося на деякі корисні та практичні приклади, які можуть допомогти вам автоматизувати деякі речі та бути більш ефективними.

Приклад 1 - Зберегти та закрити всі книги, крім активної книги

Якщо у вас багато відкритих книг і ви швидко хочете закрити всі, крім активної книги, ви можете скористатися наведеним нижче кодом,

Sub SaveCloseAllWorkbooks () Затемнити wb як робочу книгу для кожної wb у робочих книгах Про помилку відновити наступну If wb.Name ActiveWorkbook.Name Тоді wb.Save wb.Close End якщо наступна wb End Sub

Наведений вище код збереже та закриє всі книги (крім активної).

Він використовує цикл For Next для перегляду колекції всіх відкритих книг і перевіряє ім’я, використовуючи умову IF.

Якщо ім'я не таке, як у активній книзі, вона зберігається та закривається.

Якщо у будь -якій з робочих книг є код VBA, і ви не зберегли його як .xls або .xlsm, ви побачите попередження (оскільки коди vba втрачаються, коли ви зберігаєте його у форматі .xlsx).

Приклад 2 - Виділити клітинки з негативними значеннями

Припустимо, у вас є стовпець, заповнений цифрами, і ви хочете швидко виділити всі клітинки з негативними значеннями червоним кольором, ви можете зробити це за допомогою коду нижче.

Sub HighlightNegativeCells () Dim Cll як діапазон для кожного Cll у виділенні Якщо Cll.Value <0 Тоді Cll.Interior.Color = vbRed Cll.Font.Color = vb Білий кінець Якщо наступний Cll End Sub

Наведений вище код використовує цикл «Для кожного» та перевіряє кожну клітинку у вибраному вами виділенні. Якщо значення комірки є негативним, вона виділяється червоним з білим кольором шрифту.

Приклад 3 - Приховати весь аркуш, крім поточного робочого аркуша

Якщо ви хочете швидко приховати всі аркуші, крім активного, ви можете скористатися наведеним нижче кодом:

Sub HideAllExceptActiveSheet () Dim ws як робочий аркуш для кожного ws у ThisWorkbook.Worksheets If ws.Name ActiveSheet.Name Тоді ws.Visible = xlSheetHidden Наступний ws End Sub

У наведеному вище коді використовується цикл «Для кожного» для проходження колекції аркушів. Він перевіряє назву кожного аркуша і приховує його, якщо це не активний аркуш.

Приклад 4 - Вилучення числової частини з буквено -цифрового рядка

Якщо у вас є буквено -цифрові рядки в осередках і ви хочете витягти з них числову частину, ви можете зробити це за допомогою наведеного нижче коду:

Функція GetNumeric (CellRef як рядок) Dim StringLength як ціле число StringLength = Len (CellRef) For i = 1 To StringLength If IsNumeric (Mid (CellRef, i, 1)) Тоді Result = Результат & Mid (CellRef, i, 1) Далі i GetNumeric = Кінцева функція результату

Цей код створить спеціальну функцію в Excel, яку можна використовувати на робочому аркуші (так само, як звичайну функцію).

Де розмістити код VBA?

Цікаво, де код VBA міститься у вашій книзі Excel?

Excel має бекенд VBA, який називається редактором VB. Вам потрібно скопіювати та вставити код у вікно коду модуля VB Editor.

Нижче наведено кроки для цього.

  1. Перейдіть на вкладку Розробник.
  2. Натисніть на опцію Visual Basic. Це відкриє редактор VB у бекенді.
  3. На панелі «Провідник проектів» у редакторі VB клацніть правою кнопкою миші будь-який об’єкт книги, до якого потрібно вставити код. Якщо ви не бачите Провідник проектів, перейдіть на вкладку Вигляд і натисніть Провідник проектів.
  4. Перейдіть до пункту Вставити та натисніть Модуль. Це додасть об’єкт модуля до вашої книги.
  5. Скопіюйте та вставте код у вікно модуля.

Ви допоможете розвитку сайту, поділившись сторінкою з друзями

wave wave wave wave wave