VBA If, ElseIf, Else (Най -доброто ръководство за изявленията If)

VBA Ако изявление

Ако тогава

VBA Ако инструкциите ви позволяват да проверите дали изразите са TRUE или FALSE, изпълнявайки различен код въз основа на резултатите.Нека разгледаме един прост пример:
1 Ако Range ("a2"). Стойност> 0 Тогава Range ("b2"). Value = "Positive"
Това проверява дали стойността в Обхват А2 е по -голяма от 0. Ако е така, задаване на Обхват В2 равно на „Положително“Забележка: При условия на тестване ще използваме операторите за сравнение =,>, <,, =. Ще ги обсъдим по -подробно по -късно в статията.Ето синтаксиса за прост едноредов оператор If:
1 Ако [test_expression] тогава [действие]
За да улесните четенето, можете да използвате знак за продължаване на ред (подчертаване), за да разширите операторите If до два реда (както направихме на горната снимка):
12 Ако [test_expression] тогава _[действие]
12 Ако Range ("a2"). Стойност> 0 Тогава _Диапазон ("b2"). Стойност = "Положително"

Край Ако

Горното „едноредово“ изявление if работи добре, когато тествате едно условие. Но тъй като вашите IF изявления стават по -сложни с множество условия, ще трябва да добавите „End If“ в края на if инструкцията:
123 Ако Range ("a2"). Стойност> 0 ТогаваДиапазон ("b2"). Стойност = "Положително"Край Ако

Тук синтаксисът е следният:

123 Ако [test_expression] тогава[действие]Край Ако

Краят Ако означава края на израза if.

Сега нека добавим ElseIF:

ElseIF - Множество условия

ElseIf се добавя към съществуващ оператор If. В противен случай тества дали е изпълнено условие САМО, ако предишните условия не са изпълнени.В предишния пример тествахме дали стойността на клетката е положителна. Сега също ще тестваме дали стойността на клетката е отрицателна с ElseIf:
12345 Ако Range ("a2"). Стойност> 0 ТогаваДиапазон ("b2"). Стойност = "Положително"ElseIf Range ("a2"). Стойност <0 ТогаваДиапазон ("b2"). Стойност = "Отрицателно"Край Ако

Можете да използвате множество ElseIfs за тестване за множество условия:

1234567891011 Sub If_Multiple_Conditions ()Ако Range ("a2"). Value = "Cat" ТогаваДиапазон ("b2"). Стойност = "Мяу"ElseIf Range ("a2"). Value = "Dog" ТогаваRange ("b2"). Value = "Woof"ElseIf Range ("a2"). Value = "Duck" ТогаваДиапазон ("b2"). Стойност = "Quack"Край АкоEnd Sub

Сега ще добавим един Иначе:

Иначе

The Иначе ще работи, ако не са изпълнени други предишни условия.

Ще завършим нашия пример, като използваме Else, за да посочим, че ако стойността на клетката не е положителна или отрицателна, тя трябва да е нула:

1234567 Ако Range ("a2"). Стойност> 0 ТогаваДиапазон ("b2"). Стойност = "Положително"ElseIf Range ("a2"). Стойност <0 ТогаваДиапазон ("b2"). Стойност = "Отрицателно"ИначеДиапазон ("b2"). Стойност = "Нула"Край Ако

Ако-Друго

Най-често срещаният тип оператор If е прост If-Else:

1234567 Sub If_Else ()Ако Range ("a2"). Стойност> 0 ТогаваДиапазон ("b2"). Стойност = "Положително"ИначеДиапазон ("b2"). Стойност = "Не положителен"Край АкоEnd Sub

Вложени IF

Можете също така да „вмъкнете“ ако изявленията един в друг.

1234567891011 Под -вложено_Ifs ()Ако Range ("a2"). Стойност> 0 ТогаваДиапазон ("b2"). Стойност = "Положително"ИначеАко Range ("a2"). Стойност <0 ТогаваДиапазон ("b2"). Стойност = "Отрицателно"ИначеДиапазон ("b2"). Стойност = "Нула"Край АкоКрай АкоEnd Sub

АКО - Или, И, Xor, Не

След това ще обсъдим логическите оператори: Или, И, Xor, Не.

Ако Or

The Или операторски тестове, ако поне едно условие е изпълнено.

Следният код ще тества дали стойността в диапазон А2 е по -малка от 5000 или по -голяма от 10 000:

123 Ако Range ("a2"). Стойност 10000 ТогаваДиапазон ("b2"). Стойност = "Извън диапазона"Край Ако

Можете да включите няколко Ors в един ред:

123 Ако Range ("a2"). Стойност 10000 Или Range ("a2"). Value = 9999 ТогаваДиапазон ("b2"). Стойност = "Извън диапазона"Край Ако

Ако ще използвате няколко Ors, препоръчително е да използвате знак за продължение на ред, за да улесните четенето на кода:

123456 Ако Range ("a2"). Стойност <5000 Или _Диапазон ("a2"). Стойност> 10000 Или _Диапазон ("a2"). Стойност = 9999 ТогаваДиапазон ("b2"). Стойност = "Извън диапазона"Край Ако

Ако И

Операторът And ви позволява да проверите дали ВСИЧКИ условия са изпълнени.

123 Ако Range ("a2"). Стойност> = 5000 And Range ("a2"). Value <= 10000 ТогаваRange ("b2"). Value = "In Range"Край Ако

Ако Xor

Операторът Xor ви позволява да проверите дали е изпълнено точно едно условие. Ако са изпълнени нулеви условия Xor ще върне FALSE, Ако са изпълнени две или повече условия, Xor също ще върне false.

Рядко съм виждал Xor да се използва във VBA програмиране.

Ако не

Операторът Not се използва за преобразуване на FALSE в TRUE или TRUE в FALSE:

123 Sub IF_Not ()MsgBox Not (True)End Sub

Забележете, че операторът Not изисква скоби около израза за превключване.

Операторът Not може да се приложи и към операторите If:

123 Ако не (Обхват ("a2"). Стойност> = 5000 И Обхват ("a2"). Стойност <= 10000) ТогаваДиапазон ("b2"). Стойност = "Извън диапазона"Край Ако

Ако Сравнения

Когато правите сравнения, обикновено ще използвате един от операторите за сравнение:

Сравнителен оператор Обяснение
= Равна на
Не е равно на
> По-голяма от
>= По -голямо или равно на
< По-малко от
<= По -малко или равно на

Можете обаче да използвате всеки израз или функция което води до TRUE или FALSE

Ако - булева функция

Когато изграждате изрази за If изявления, можете също да използвате всяка функция, която генерира TRUE или False. VBA има няколко от тези функции:

Функция Описание
IsDate Връща TRUE, ако изразът е валидна дата
Празно е Проверете за празни клетки или неопределени променливи
IsError Проверете за стойности на грешки
IsNull Проверете за NULL стойност
IsNumeric Проверете за числова стойност

Те могат да бъдат наречени така:

1 If IsEmpty (Range ("A1"). Value) Тогава MsgBox "Cell Empty"

Excel също има много допълнителни функции, които могат да бъдат извикани с помощта на WorksheetFunction. Ето пример за функцията Excel IsText:

12 Ако Application.WorksheetFunction.IsText (Диапазон ("a2"). Стойност) Тогава _MsgBox "Клетката е текст"

Можете също така да създадете свои собствени потребителски функции (UDF). По -долу ще създадем проста булева функция, която връща TRUE. Тогава ще извикаме тази функция в нашия оператор If:

1234567891011 Sub If_Function ()Ако TrueFunction ТогаваMsgBox "Вярно"Край АкоEnd SubФункция TrueFunction () Като булеваTrueFunction = ИстинаКрайна функция

Сравняване на текст

Можете също да сравнявате текст, подобен на сравняване на числа:
1 Msgbox "a" = "b"
1 Msgbox "a" = "a"
Когато сравнявате текст, трябва да имате предвид „Делото“ (горен или долен). По подразбиране VBA счита букви с различни букви като несъвпадащи. С други думи, „А“ „а“.Ако искате VBA да игнорира регистъра, трябва да добавите декларацията Option Compare Text в горната част на вашия модул:
1 Опция Сравняване на текст

След като направите тази декларация „А“ = „а“:
12345 Опция Сравняване на текстSub If_Text ()MsgBox "a" = "A"End Sub

VBA Ако харесвате

VBA Like Operator ви позволява да правите неточни сравнения на текст. Щракнете върху връзката „Like Operator“, за да научите повече, но по -долу ще покажем основен пример:

12345678 Dim strName като StringstrName = "Мистър Чарлз"Ако strName като "Mr*" ТогаваMsgBox "Вярно"ИначеMsgBox "False"Край Ако

Тук използваме заместваща звезда „*“. * Означава произволен брой произволни знаци. Така че горният оператор If ще върне TRUE. Операторът Like е изключително мощен, но често недостатъчно използван инструмент за работа с текст.

Ако цикли

VBA Loops ви позволява да повтаряте действия. Комбинирането на IF-ELSE с цикли е чудесен начин за бърза обработка на много изчисления.

Продължавайки с нашия положителен / отрицателен пример, ще добавим For Every Loop, за да преминем през редица клетки:

1234567891011121314 Sub If_Loop ()Dim Cell като диапазонЗа всяка клетка в обхвата ("A2: A6")Ако Cell.Value> 0 ТогаваCell.Offset (0, 1) .Value = "Положително"ElseIf Cell.Value <0 ТогаваCell.Offset (0, 1) .Value = "Отрицателно"ИначеCell.Offset (0, 1) .Value = "Нула"Край АкоСледваща клеткаEnd Sub

Ако други примери

Сега ще разгледаме някои по -конкретни примери.

Проверете дали клетката е празна

Този код ще провери дали клетката е празна. Ако е празно, ще игнорира клетката. Ако не е празно, то ще изведе стойността на клетката в клетката вдясно:
1234567 Sub If_Cell_Empty ()Ако Range ("a2"). Стойност "" ТогаваДиапазон ("b2"). Стойност = Обхват ("a2"). СтойностКрай АкоEnd Sub

Проверете дали клетката съдържа специфичен текст

Функцията Instr тества дали низ от текст е намерен в друг низ. Използвайте го с оператор If, за да проверите дали клетката съдържа конкретен текст:
123 Ако Instr (Диапазон ("A2"). Стойност, "текст")> 0 ТогаваMsgbox „Текстът е намерен“Край Ако

Проверете дали клетката съдържа текст

Този код ще тества дали клетката е текст:
1234567 Sub If_Cell_Is_Text ()Ако Application.WorksheetFunction.IsText (Диапазон ("a2"). Стойност) След товаMsgBox "Клетката е текст"Край АкоEnd Sub

Ако отидете

Можете да използвате резултата от оператор If, за да „отидете“ в друг раздел на кода.
12345678910 Sub IfGoTo ()Ако IsError (Cell.value) ТогаваОтидете на ПропусканеКрай Ако- Някакъв кодексПропускане:End Sub

Изтриване на ред, ако клетката е празна

С помощта на Ifs и цикли можете да проверите дали клетката е празна и ако е така, изтрийте целия ред.
123456789 Sub DeleteRowIfCellBlank ()Dim Cell As RangeЗа всяка клетка в обхвата ("A2: A10")If Cell.Value = "" Тогава Cell.EntireRow.DeleteСледваща клеткаEnd Sub

Ако MessageBox Да / Не

С кутии за съобщения VBA можете да помолите потребителя да избере от няколко опции. Полето за съобщение „Да / Не“ изисква от потребителя да избере „Да“ или „Не“. Можете да добавите поле за съобщение „Да / Не“ към процедура, за да попитате потребителя дали би искал да продължи изпълнението на процедурата или не. Вие обработвате въвеждането на потребителя с помощта на оператор If.Ето полето за съобщения „Да/Не“ на практика:
123456789101112 Sub MsgBoxVariable ()Затъмнен отговор Като цяло числоanswer = MsgBox ("Искате ли да продължите?", vbQuestion + vbДа Не)Ако отговор = vbДа ТогаваMsgBox "Да"ИначеMsgBox "Не"Край АкоEnd Sub

VBA If, ElseIf, Else in Access VBA

Функциите If, ElseIf и Else работят точно същите в Access VBA като в Excel VBA.

Можете да използвате оператор If, за да проверите дали има записи в набор от записи.

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave