Ако тогава друго изявление в Excel VBA (обяснено с примери)

В Excel VBA, IF Then Else изявлението ви позволява да проверите за условие и да извършите съответно действие.

Това е изключително ценно в много ситуации, както ще видим в примерите по -късно в този урок.

За да ви дадем прост пример, да предположим, че имате списък с оценки в Excel и искате да подчертаете всички онези ученици, които са вкарали А. Сега, ако ви помоля да направите това ръчно, ще проверите оценката на всеки ученик и дали е a A, ще го подчертаете, а ако не е, тогава ще го оставите такъв, какъвто е.

Същата логика може да бъде вградена във VBA с помощта на Ако тогава друго изявление също (и разбира се прави много повече от просто подчертаване на оценки).

В този урок ще ви покажа различни начини, по които конструкцията „If then Else“ може да се използва в Excel VBA, и някои практически примери в действие.

Но преди да навляза в подробностите, нека ви дам синтаксиса на изявлението „IF then Else“.

Ако се интересувате да научите VBA по лесния начин, вижте моя Онлайн обучение по Excel VBA.

Синтаксис - ако след това друго

По -долу е общият синтаксис на конструкцията If Then Else във VBA

IF условие Тогава 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 ще ви покаже грешка - „Block IF without END IF“

Примери за използване на оператор IF тогава във VBA

За да ви дам представа за това как изявлението IF-THEN работи във VBA, нека започна с някои основни примери (някои практически и по-полезни примери са разгледани по-късно в този урок).

Да предположим, че имате оценка на студент в клетка А1 и искате да проверите дали студентът е положил изпита или не (прагът за преминаване на оценки е 35).

След това можете да използвате следния код:

Sub CheckScore () Ако Range ("A1"). Стойност> = 35 Тогава MsgBox "Pass" End Sub

Горният код има един ред от IF израз, който проверява стойността в клетка A1.

Ако е повече от 35, се показва съобщението - „Pass“.

Ако е по -малко от 35, нищо не се случва.

Но какво ще стане, ако искате да покажете съобщение и в двата случая, независимо дали студент е положил или не е положил изпита.

Кодът по -долу ще направи това:

Sub CheckScore () If Range ("A1"). Value> = 35 then MsgBox "Pass" Else MsgBox "Fail" End If End Sub

Горният код използва IF, както и оператора ELSE за изпълнение на две различни условия. Когато резултатът е повече от (или равен) на 35, условието IF е вярно и кодът точно под него се изпълнява (всичко преди оператора Else).

Но когато условието IF е FALSE, кодът скача към частта Else и изпълнява кодовия блок в нея.

Обърнете внимание, че когато използваме един ред на оператора IF Then, не е необходимо да използваме End IF. Но когато го разделим на повече от един ред, трябва да използваме израза End If.

Вложено IF тогава (множество изявления IF след това)

Досега използвахме единствен оператор IF Then.

В случай, че имате няколко условия за проверка, можете да използвате:

  • Множество условия на IF
  • Ако тогава друго изявление
  • IF Тогава ElseIf Друга конструкция

Позволете ми да ви покажа как те се различават и как да използвате това в Excel VBA.

Множество изявления IF след това

Да вземем същия пример за използване на оценка на ученик.

Ако ученикът получи по -малко от 35, съобщението за показване е „Неуспешно“, ако резултатът е повече от или равно на 35, съобщението за показване е „Проход“.

Можем да използваме кода по -долу, за да направим това:

Sub CheckScore () If Range ("A1"). Value = 35 Тогава MsgBox "Pass" End Sub

Можете да използвате множество инструкции IF Then, както е показано по -горе. Въпреки че това работи, това не е пример за добро кодиране (както ще видите алтернативите по -долу).

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

Така че дори първото твърдение IF да е правилно, второто пак ще бъде оценено.

АКО След това друго изявление

Да предположим, че този път, вместо просто да показваме съобщението Pass/Fail, имаме още едно условие.

Ако ученикът получи по -малко от 35, съобщението за показване е „Неуспешно“, ако резултатът е повече от или равно на 35, съобщението за показване е „Проход“, а ако резултатът е повече от 80, съобщението за показване е „Пропуск, с отличие“.

Можем да използваме кода по -долу, за да направим това:

Sub CheckScore () If Range ("A1"). Value <35 then MsgBox "Fail" Else If Range ("A1"). Value <80 then MsgBox "Pass" Else MsgBox "Pass, with the Distinction" End If End If End Под

В горния код сме използвали множество оператори IF (вложени IF Тогава) с помощта на Else.

Така че има конструкция „IF Then Else“ в конструкцията „IF Then Else“. Този тип влагане ви позволява да проверите за множество условия и да изпълните съответния блок код.

АКО След това Друго Изказване

Горният код (който видяхме в предишния раздел) може да бъде допълнително оптимизиран с помощта на оператора ElseIf.

Ето какво се опитваме да направим - Ако ученикът получи по -малко от 35, съобщението за показване е „Неуспешно“, ако резултатът е повече от или равен на 35, съобщението за показване е „Проход“ и ако резултат е повече от 80, съобщението за показване е „Pass, with Distinction“.

Sub CheckScore () If Range ("A1"). Value <35 then MsgBox "Fail" ElseIf Range ("A1"). Value <80 then MsgBox "Pass" Else MsgBox "Pass, with the Distinction" End If End Sub

Горният код използва ElseIf, който ни позволява да запазим всички условия в един единствен оператор IF Then.

Използване на AND и OR в IF then Else

Досега в този урок проверяваме само за едно условие наведнъж.

Въпреки това, когато имате множество зависими условия, можете да използвате оператора AND или OR с условията IF.

По -долу е синтаксисът на използването на условието AND/OR с израза IF Then.

IF условие1 И условие2 Тогава true_code Друг false_code Край IF

В горния код, само когато и условието1 и условие2 са изпълнени, true_code се изпълнява. Дори ако едно от условията е невярно, то ще изпълни false_code.

С OR, дори ако едно от условията е вярно, то ще изпълни true_code. Само когато всички условия са неверни, той изпълнява false_code.

Сега нека видим как операторът AND и OR работи с конструкцията IF Then Else.

Да предположим, че имате оценки за два предмета вместо един и искате да проверите за следните условия:

  • Неуспех - Когато резултатът е по -малък от 35 по някой от предметите.
  • Пропуснете - Когато резултатът е повече от или равен на 35, но по -малък от 80 и при двата предмета.
  • Pass, с отличие - Когато резултатът е повече от 35 в двата предмета и е по -голям или равен на 80 в един или в двата предмета.

Ето кода, който ще направи това:

Sub CheckScore () If Range ("A1"). Value <35 Or Range ("B1"). Value <35 then MsgBox "Fail" ElseIf Range ("A1"). Value <80 And Range ("B1"). Стойност <80 Тогава MsgBox "Pass" Друг MsgBox "Pass, с отличие" End If End Sub

Горният код използва както оператори OR, така и AND.

Можете също да напишете същия код с малка промяна (използвайки ИЛИ вместо И).

Sub CheckScore () If Range ("A1"). Value <35 Or Range ("B1"). Value 80 Or Range ("B1"). Value> 80 then MsgBox "Pass, with the Distinction" Else MsgBox "Pass" End Ако End Sub

И двата горни кода VBA ще ви дадат същия резултат. Лично аз предпочитам първото, тъй като има логичен поток за проверка на резултатите (но това съм само аз).

Използване Не е равно на в Ако тогава

Във всички примери по -горе използвахме условията, които проверяват дали стойност е равна на определена стойност или не.

Можете също да използвате подобни кодове, когато проверявате, когато стойността не е равна на определена стойност във VBA кода. Не е равно на представено от Excel VBA.

За да видите практически пример за използване, погледнете пример 1 по -долу.

Използване на If Other Else с цикли във VBA

Досега минахме през някои примери, които са добри, за да разберем как изявленията „IF-THEN“ работят във VBA, но не са полезни в практическия свят.

Ако трябва да оценя студентите, мога лесно да направя това с помощта на функциите на Excel.

Така че нека да разгледаме някои полезни и практически примери, които могат да ви помогнат да автоматизирате някои неща и да бъдете по -ефективни.

Пример 1 - Запазване и затваряне на всички работни книги с изключение на активната работна книга

Ако имате отворени много работни книги и искате бързо да затворите всички, с изключение на активната работна книга, можете да използвате кода по -долу,

Sub SaveCloseAllWorkbooks () Dim wb като работна книга за всяка wb в работни книги При грешка възобновяване на следващия If wb.Name ActiveWorkbook.Name Тогава wb.Save wb.Close End If Next 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 Ако ws.Name ActiveSheet.Name Тогава ws.Visible = xlSheetHidden Следващ ws End Sub

Горният код използва цикъла For Each за преминаване през колекция от работни листове. Той проверява името на всеки работен лист и го скрива, ако не е активният работен лист.

Пример 4 - Извлечете числовата част от буквено -цифров низ

Ако имате буквено -цифрови низове в клетките и искате да извлечете числовата част от нея, можете да направите това, като използвате кода по -долу:

Функция GetNumeric (CellRef As String) Dim StringLength As Integer StringLength = Len (CellRef) For i = 1 To StringLength If IsNumeric (Mid (CellRef, i, 1)) Тогава Result = Result & Mid (CellRef, i, 1) Next i GetNumeric = Крайна функция на резултата

Този код ще създаде персонализирана функция в Excel, която може да се използва в работния лист (точно като обикновена функция).

Къде да поставите VBA кода?

Чудите се къде отива кодът VBA във вашата работна книга на Excel?

Excel има VBA бекенд, наречен VB редактор. Трябва да копирате и поставите кода в кодовия прозорец на модула VB Editor.

Ето стъпките за това:

  1. Отидете в раздела Разработчик.
  2. Щракнете върху опцията Visual Basic. Това ще отвори VB редактора в задната част.
  3. В прозореца Project Explorer в редактора на VB щракнете с десния бутон върху всеки обект за работната книга, в който искате да вмъкнете кода. Ако не виждате Project Explorer, отидете в раздела View и щракнете върху Project Explorer.
  4. Отидете на Вмъкване и щракнете върху Модул. Това ще вмъкне обект на модул за вашата работна книга.
  5. Копирайте и поставете кода в прозореца на модула.

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

wave wave wave wave wave