Как да използвате If-Then в Excel 2016 VBA

If-Then е най-важната контролна структура на VBA. Вероятно ще използвате тази команда всеки ден. Използвайте структурата If-Then, когато искате да изпълните един или повече оператори условно. Незадължителната клауза Else, ако е включена, ви позволява да изпълните един или повече оператори, ако условието, което тествате, не е вярно. Ето една проста процедура CheckUser, прекодирана за използване на структурата If-Then-Else:

Sub CheckUser2()
  Потребителско име = InputBox(„Въведете вашето име:“)
  Ако потребителско име = „Satya Nadella“ Тогава
    MsgBox („Добре дошла Сатя…“)
„…[Още код тук]…
  иначе
    MsgBox „Съжалявам. Само Сатя Надела може да управлява това."
  Край, ако
Край под

Ако-тогава примери

Следната рутина демонстрира структурата If-Then без незадължителната клауза Else:

Под GreetMe()
  Ако времето < 0,5, тогава MsgBox „Добро утро“
Край под

Процедурата GreetMe използва функцията Time на VBA, за да получи системното време. Ако текущото време е по-малко от .5, рутината показва приятелски поздрав. Ако Time е по-голямо или равно на .5, рутината приключва и нищо не се случва.

За да покажете различен поздрав, ако Времето е по-голямо или равно на .5, можете да добавите друго изявление If-Then след първото:

Под GreetMe2()
  Ако времето < 0,5, тогава MsgBox „Добро утро“
  Ако Времето >= 0,5 Тогава MsgBox „Добър ден“
Край под

Забележете, че >= (по-голямо или равно на) се използва за втория израз If-Then. Това гарантира, че целият ден е покрит. Ако беше използван > (по-голям от), нямаше да се появи съобщение, ако тази процедура беше изпълнена точно в 12:00 на обяд. Това е малко вероятно, но с важна програма като тази не искате да рискувате.

Пример "Ако-то-друго".

Друг подход към предходния проблем използва клаузата Else. Ето същата рутина, прекодирана за използване на структурата If-Then-Else:

Под GreetMe3()
  Ако времето < 0,5, тогава MsgBox „Добро утро“ Друго _
    MsgBox „Добър ден“
Край под

Забележете, че символът за продължение на реда (долно черти) се използва в предходния пример. Инструкцията If-Then-Else всъщност е едно изявление. VBA предоставя малко по-различен начин за кодиране на конструкции If-Then-Else, които използват израз End If. Следователно процедурата GreetMe може да бъде пренаписана като

Под GreetMe4()
  Ако Времето < 0,5 Тогава
    MsgBox „Добро утро“
  иначе
    MsgBox „Добър ден“
  Край, ако
Край под

Всъщност можете да вмъкнете произволен брой изрази в частта If и произволен брой изрази в частта Else. Този синтаксис е по-лесен за четене и прави изразите по-кратки.

Ами ако трябва да разширите рутината на GreetMe, за да се справите с три условия: сутрин, следобед и вечер? Имате две опции: Използвайте три оператора If-Then или използвайте вложена структура If-Then-Else. Влагането означава поставяне на структура If-Then-Else в друга If-Then-Else структура. Първият подход, използващ три израза If-Then, е по-прост:

Под GreetMe5()
 Затъмни съобщение като низ
 Ако Времето < 0,5 Тогава Msg = „Сутрин“
 Ако Време >= 0,5 и Време < 0,75 Тогава Msg = „След обяд“
 Ако Времето >= 0,75 Тогава Msg = „Вечер“
 MsgBox „Добре“ & Msg
Край под

Добавен е нов обрат с използването на променлива. Променливата Msg получава различна текстова стойност в зависимост от времето на деня. Изявлението MsgBox показва поздрава: Добро утро, Добър ден или Добър вечер.

Следната рутина изпълнява същото действие, но използва структура If-Then-End If:

Под GreetMe6()
  Затъмни съобщение като низ
  Ако Времето < 0,5 Тогава
    Съобщение = "Утро"
  Край, ако
  Ако Времето >= 0,5 и Времето < 0,75 Тогава
    Съобщение = „Следобед“
  Край, ако
  Ако Времето >= 0,75 Тогава
    Съобщение = „Вечер“
  Край, ако
  MsgBox „Добре“ & Msg
Край под

Използване на ElseIf

В предишните примери се изпълнява всеки израз в рутината. Малко по-ефективна структура би напуснала рутината веднага щом се установи, че дадено условие е вярно. Сутринта, например, процедурата трябва да покаже съобщението „Добро утро“ и след това да излезе — без да оценява другите излишни условия.

С малка рутина като тази, не е нужно да се притеснявате за скоростта на изпълнение. Но за по-големи приложения, в които скоростта е критична, трябва да знаете за друг синтаксис за структурата If-Then.

Ето как можете да пренапишете рутината GreetMe, като използвате този синтаксис:

Под GreetMe7()
 Затъмни съобщение като низ
 Ако Времето < 0,5 Тогава
   Съобщение = "Утро"
 ElseIf Време >= 0,5 И Време < 0,75 Тогава
   Съобщение = „Следобед“
 иначе
   Съобщение = „Вечер“
 Край, ако
 MsgBox „Добре“ & Msg
Край под

Когато дадено условие е вярно, VBA изпълнява условните оператори и структурата If завършва. С други думи, тази процедура е малко по-ефективна от предишните примери. Компромисът е, че кодът е по-труден за разбиране.

Друг пример ако-тогава

Ето още един пример, който използва простата форма на структурата If-Then. Тази процедура подканва потребителя за количество и след това показва съответната отстъпка въз основа на количеството, което потребителят въвежда:

Подпокажи отстъпка()
  Затъмнено количество толкова дълго
  Дим отстъпка като двойна
  Количество = InputBox („Въведете количество:“)
  Ако количество > 0, тогава отстъпка = 0,1
  Ако количеството >= 25, тогава отстъпката = 0,15
  Ако количеството >= 50 Тогава отстъпка = 0,2
  Ако количеството >= 75, тогава отстъпката = 0,25
  MsgBox „Отстъпка:“ и отстъпка
Край под

Забележете, че всеки оператор If-Then в тази рутина се изпълнява и стойността за Discount може да се промени, докато операторите се изпълняват. Въпреки това, рутината в крайна сметка показва правилната стойност за отстъпка, тъй като операторите If-Then са във възходящ ред на стойностите на отстъпката.

Следващата процедура изпълнява същите задачи, като използва алтернативния синтаксис ElseIf. В този случай рутината приключва веднага след изпълнение на операторите за истинско условие:

ПодпокажиОтстъпка2()
 Затъмнено количество толкова дълго
 Дим отстъпка като двойна
 Количество = InputBox(„Въведете количество:“)
 Ако количество > 0 и количество < 25 Тогава
  Отстъпка = 0,1
 Иначе, ако количество >= 25 и количество < 50 Тогава
  Отстъпка = 0,15
 ElseIf Количество >= 50 И Количество < 75 Тогава
  Отстъпка = 0,2
 ElseIf Количество >= 75 Тогава
  Отстъпка = 0,25
 Край, ако
 MsgBox „Отстъпка:“ и отстъпка
Край под

Тези множество структури If-Then са доста тромави. Може да искате да използвате структурата If-Then само за прости двоични решения.


Как да блокирате Microsoft Word да отваря файлове в режим само за четене в Windows

Как да блокирате Microsoft Word да отваря файлове в режим само за четене в Windows

Как да блокирам Microsoft Word да отваря файлове в режим само за четене в Windows Microsoft Word отваря файлове в режим само за четене, което прави невъзможно редактирането им? Не се притеснявайте, методите са по-долу

Как да коригирате неправилно отпечатване на документи на Microsoft Word

Как да коригирате неправилно отпечатване на документи на Microsoft Word

Как да коригирате грешки при отпечатването на неправилни документи на Microsoft Word Грешките при отпечатването на документи на Word с променени шрифтове, разхвърляни абзаци, липсващ текст или изгубено съдържание са доста чести. Въпреки това недейте

Изтрийте рисунки с писалка и маркер на вашите слайдове на PowerPoint

Изтрийте рисунки с писалка и маркер на вашите слайдове на PowerPoint

Ако сте използвали писалката или маркера, за да рисувате върху слайдовете на PowerPoint по време на презентация, можете да запазите чертежите за следващата презентация или да ги изтриете, така че следващия път, когато го покажете, да започнете с чисти слайдове на PowerPoint. Следвайте тези инструкции, за да изтриете чертежи с писалка и маркери: Изтриване на линии една в […]

Съдържание на библиотеката за стилове в SharePoint 2010

Съдържание на библиотеката за стилове в SharePoint 2010

Библиотеката със стилове съдържа CSS файлове, файлове с разширяем език на стиловия език (XSL) и изображения, използвани от предварително дефинирани главни страници, оформления на страници и контроли в SharePoint 2010. За да намерите CSS файлове в библиотеката със стилове на сайт за публикуване: Изберете Действия на сайта→Преглед Цялото съдържание на сайта. Появява се съдържанието на сайта. Библиотеката Style се намира в […]

Форматирайте числата в хиляди и милиони в отчети на Excel

Форматирайте числата в хиляди и милиони в отчети на Excel

Не затрупвайте аудиторията си с огромни числа. В Microsoft Excel можете да подобрите четливостта на вашите табла за управление и отчети, като форматирате числата си така, че да се показват в хиляди или милиони.

Как да споделяте и следвате сайтове на SharePoint

Как да споделяте и следвате сайтове на SharePoint

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

Как да конвертирате дати в юлиански формати в Excel

Как да конвертирате дати в юлиански формати в Excel

Юлианските дати често се използват в производствени среди като времеви печат и бърза справка за партиден номер. Този тип кодиране на дата позволява на търговците на дребно, потребителите и обслужващите агенти да идентифицират кога е произведен продуктът и по този начин възрастта на продукта. Юлианските дати се използват и в програмирането, военните и астрономията. Различно […]

Как да създадете уеб приложение на Access

Как да създадете уеб приложение на Access

Можете да създадете уеб приложение в Access 2016. И така, какво всъщност е уеб приложение? Е, уеб означава, че е онлайн, а приложението е просто съкращение от „приложение“. Персонализирано уеб приложение е онлайн приложение за база данни, достъпно от облака с помощта на браузър. Вие създавате и поддържате уеб приложението в настолната версия […]

Лента за бързо стартиране в SharePoint 2010

Лента за бързо стартиране в SharePoint 2010

Повечето страници в SharePoint 2010 показват списък с връзки за навигация в лентата за бързо стартиране в лявата част на страницата. Лентата за бързо стартиране показва връзки към представено съдържание на сайта, като списъци, библиотеки, сайтове и страници за публикуване. Лентата за бързо стартиране включва две много важни връзки: Връзка към цялото съдържание на сайта: […]

Какво означават съобщенията за грешка на Solver в Excel?

Какво означават съобщенията за грешка на Solver в Excel?

За прости проблеми Solver в Excel обикновено бързо намира оптималните стойности на променливата Solver за целевата функция. Но в някои случаи Solver има проблеми с намирането на стойностите на променливата Solver, които оптимизират целевата функция. В тези случаи Solver обикновено показва съобщение или съобщение за грешка, което описва или обсъжда проблема, който […]