Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

курсовая / Источники / Условные_операторы_VBA_43780a3c_9167_4822_b9e2_983f3821302f

.docx
Скачиваний:
1
Добавлен:
27.09.2025
Размер:
22.75 Кб
Скачать

Условные операторы позволяют выполнять различные действия в зависимости от того, выполняется ли определенное условие (условия). Это ключевой элемент управления потоком выполнения вашего кода.

В VBA есть два основных типа условных операторов:

1.  **If...Then...Else** 2.  **Select Case**

Рассмотрим каждый из них подробнее:

### 1. Оператор If...Then...Else

Это наиболее распространенный условный оператор. Он позволяет проверить одно или несколько условий и выполнить соответствующий блок кода.

**Синтаксис:**

```vba If условие1 Then     ' Код, выполняемый, если условие1 истинно [ElseIf условие2 Then]     ' Код, выполняемый, если условие2 истинно [Else]     ' Код, выполняемый, если ни одно из условий не истинно End If ```

**Пояснения:**

*   `условие1`, `условие2` ... :  Это логические выражения, которые оцениваются как `True` (истина) или `False` (ложь). *   `Then`: Ключевое слово, указывающее, что дальше идет блок кода, который нужно выполнить, если условие истинно. *   `ElseIf`: Необязательная часть. Позволяет проверить дополнительное условие, если предыдущее условие ложно. Таких `ElseIf` может быть несколько. *   `Else`: Необязательная часть.  Блок кода после `Else` выполняется, если все предыдущие условия оказались ложными. *   `End If`: Обязательно завершает конструкцию `If...Then...Else`.

**Примеры:**

*   **Простой If:**

    ```vba     Sub SimpleIf()         Dim age As Integer         age = 20

        If age >= 18 Then             Debug.Print "Совершеннолетний"         End If     End Sub     ``` *   **If...Then...Else:**

    ```vba     Sub IfThenElse()         Dim score As Integer         score = 75

        If score >= 90 Then             Debug.Print "Отлично"         ElseIf score >= 70 Then             Debug.Print "Хорошо"         Else             Debug.Print "Удовлетворительно"         End If     End Sub     ```

*   **Вложенные If (If внутри If):**

    ```vba     Sub NestedIf()         Dim num As Integer         num = 15

        If num > 0 Then             If num Mod 2 = 0 Then  'Проверка на четность                 Debug.Print "Положительное и четное"             Else                 Debug.Print "Положительное и нечетное"             End If         ElseIf num < 0 Then             Debug.Print "Отрицательное"         Else             Debug.Print "Ноль"         End If     End Sub     ```

*   **Однострочный If (без End If):**

    ```vba      Sub OneLineIf()         Dim x As Integer         x = 10         If x > 5 Then Debug.Print "x больше 5"     End Sub     ```     Однострочный `If` используется, когда нужно выполнить *только одно* действие, если условие истинно.  `Else` в однострочном `If` не допускается.

### 2. Оператор Select Case

Оператор `Select Case` предоставляет более удобный способ выбора одного из нескольких блоков кода на основе значения *одной* переменной или выражения. Он особенно полезен, когда у вас много возможных значений, и использовать `If...Then...ElseIf` было бы громоздко.

**Синтаксис:**

```vba Select Case проверяемое_выражение     Case значение1         ' Код, выполняемый, если проверяемое_выражение равно значению1     Case значение2         ' Код, выполняемый, если проверяемое_выражение равно значению2     [Case значение3 To значение4]         ' Код для диапазона значений     [Case Is > значение5]         'Код, если значение больше     [Case Else]         ' Код, выполняемый, если ни один из Case не подошел End Select

```

**Пояснения:**

*   `проверяемое_выражение`: Переменная или выражение, значение которого будет сравниваться. *   `Case значение1`, `Case значение2`:  Указывают конкретные значения, с которыми сравнивается `проверяемое_выражение`. *   `Case значение3 To значение4`:  Позволяет указать *диапазон* значений. *   `Case Is > значение5`: Позволяет использовать операторы сравнения (`>`, `<`, `=`, `>=`, `<=`, `<>`). *  `Case Else`: Необязательная часть. Код выполняется, если ни одно из предыдущих условий `Case` не подошло. *   `End Select`: Обязательно завершает конструкцию `Select Case`.

**Примеры:**

*   **Простой Select Case:**

    ```vba     Sub SimpleSelectCase()         Dim dayOfWeek As Integer         dayOfWeek = 3 'Например, среда

        Select Case dayOfWeek             Case 1                 Debug.Print "Понедельник"             Case 2                 Debug.Print "Вторник"             Case 3                 Debug.Print "Среда"             Case 4                 Debug.Print "Четверг"             Case 5                 Debug.Print "Пятница"             Case 6                 Debug.Print "Суббота"             Case 7                 Debug.Print "Воскресенье"             Case Else                 Debug.Print "Неверный день недели"         End Select     End Sub     ```

*   **Select Case с диапазоном:**

    ```vba     Sub SelectCaseRange()         Dim temperature As Integer         temperature = 22

        Select Case temperature             Case Is < 0                 Debug.Print "Мороз"             Case 0 To 10                 Debug.Print "Холодно"             Case 11 To 25                 Debug.Print "Тепло"             Case Is > 25                 Debug.Print "Жарко"         End Select     End Sub     ```

* **Select Case со строками:**

    ```vba     Sub SelectCaseString()         Dim fruit As String         fruit = "Яблоко"

        Select Case fruit             Case "Яблоко", "Груша" ' Несколько значений в одном Case                 Debug.Print "Фрукт"             Case "Банан"                 Debug.Print "Тоже фрукт, но другой :)"             Case Else                 Debug.Print "Не фрукт"         End Select     End Sub

    ```

### Важные моменты и лучшие практики

*   **Логические операторы:**  В условиях (`If`, `ElseIf`, `Case Is`) можно использовать логические операторы:     *   `And`: Логическое "И" (оба условия должны быть истинны).     *   `Or`: Логическое "ИЛИ" (хотя бы одно условие должно быть истинно).     *   `Not`: Логическое "НЕ" (инвертирует истинность условия).     *   `Xor`: Исключающее "ИЛИ" (истинно, если только одно из условий истинно).     *   `Eqv`: Эквивалентность (истинно, если оба условия имеют одинаковое значение).     *   `Imp`: Импликация.

    ```vba     If (x > 5 And y < 10) Or z = 0 Then         ' ...     End If     ```

*   **Читаемость:**  Используйте отступы (Tab), чтобы сделать код более читаемым и понятным.  Это особенно важно для вложенных `If` и `Select Case`.

*   **Комментарии:**  Не забывайте комментировать сложные условия, чтобы объяснить, что они делают.

*   **Выбор между If и Select Case:**  Если у вас много условий, основанных на *одной* переменной, `Select Case` обычно предпочтительнее.  Если условия более сложные или включают разные переменные, используйте `If...Then...Else`.

* **Типы данных:** Убедитесь, что типы данных в ваших условиях и `Case` совместимы.