Найти в Дзене
Хронотехник

Секрет аккуратного кода VBA: почему Select Case лучше If

Представьте, что вы — шеф-повар на кухне. У вас есть один главный ингредиент (допустим, картошка), и вам нужно решить, что из него приготовить. Можно построить длинную цепочку условий: «Если картошка молодая — сделаю пюре, если старая — жареную, если позеленела — выброшу...» А можно просто сказать: «Смотря какая картошка!» — и выбрать рецепт по ситуации.

Повар на кухне
Повар на кухне

Вот именно так и работает оператор Select Case в VBA. Он заменяет эти бесконечные «если-то-иначе» на простой и понятный разбор вариантов.

Давайте я покажу на живом примере. Допустим, вы пишете программу для кофейни. Без Select Case она выглядела бы как приказ строгого начальника:

«Если заказали эспрессо — 120 рублей! Если капучино — 150! Если латте — 160! Если что-то непонятное — 100 рублей, и пусть разбираются!»

С Select Case это превращается в вежливый диалог:

«Какой напиток? Эспрессо? Будет 120 рублей. Капучино? Пожалуйста, 150. Ах, латте или флэт уайт? Тогда 160. Что-то другое? Вот цена 100 рублей».

Чувствуете разницу? Код становится не только понятнее, но и как-то дружелюбнее.

А вот практический пример из жизни. Допустим, вы пишете программу для определения скидки в магазине в зависимости от суммы покупки. С Select Case это выглядит очень просто:

«Смотрим на сумму покупки. Если больше 5000 рублей — дарим скидку 15%. Если от 3000 до 5000 — дарим 10%. Если от 1000 до 3000 — дарим 5%. А если меньше 1000 — говорим спасибо за покупку!»

Вот как это выглядит в коде vba:

Select Case суммаПокупки
Case Is >= 5000
скидка = 0.15
Case 3000 To 5000
скидка = 0.10
Case 1000 To 3000
скидка = 0.05
Case Else
скидка = 0
End Select

Кстати, о волшебстве. Select Case умеет работать не только с числами, но и с текстом, датами, и даже с несколькими условиями сразу. Например, можно сказать: «Смотрю на день недели. Случай понедельник-пятница — работаем как обычно. Случай суббота-воскресенье — выходной, но с утренним кофе!»

Запутанный лабиринт операторов If
Запутанный лабиринт операторов If

Почему я вообще заговорил об этом операторе? Представьте, что вы читаете книгу, где все предложения начинаются с «если». «Если он проснётся рано, то пойдёт на работу. Если он проснётся поздно, то опоздает. Если на улице дождь, то возьмёт зонт...» Через полстраницы вы забудете, о чём вообще речь. Так же и в программировании — длинные цепочки условий превращаются в настоящий лабиринт.

Select Case — это как аккуратная табличка с указателями. Посмотрел — и сразу понятно, куда идти.

Кстати, он ещё и быстрее работает. Представьте, что вы ищете ключи в сумке. Можно вытряхнуть всё подряд и перебирать предметы по очереди (это наш старый добрый If). А можно сразу пошарить в кармашке для мелочи — и вот они, ключи! Select Case действует примерно так — умно и эффективно.

Начинайте с простого. Перепишите одну свою процедуру с длинными условиями — и вы сразу почувствуете разницу. Код станет дышать, как проветренная комната. И главное — через месяц вы сами сможете легко в нём разобраться, без намёка на головную боль.

В общем, Select Case — это ваш верный помощник в мире программирования. Как тот друг, который всегда помогает разложить всё по полочкам. Попробуйте — и вам больше не захочется возвращаться к бесконечным «если»!