Разное

Оператор vba case: Оператор Select…Case — Visual Basic

Содержание

Выберите заявление case (VBA) | Microsoft Learn

Twitter LinkedIn Facebook Адрес электронной почты

  • Статья
  • Чтение занимает 2 мин

Выполняет несколько групп операторов в зависимости от значения выражения.

Синтаксис

Выбор тестэкспрессии case
[ Case expressionlist-n [ statements-n ]]
[ Case Else [ elsestatements ]]
End Select

Синтаксис оператора Select Case состоит из следующих частей:

ЧастьОписание
testexpressionОбязательно. Любое числовое выражение или строковое выражение.
expressionlist-nОбязательный параметр, если используется оператор Case.

Делимитированный список одной или более из следующих форм: выражение, expressionToexpression, Iscomparisonoperator_._

Ключевое слово To указывает диапазон значений. Если вы используете ключевое слово

To, то наименьшее значение должно быть указано до To.

Используйте ключевое слово Is с операторами сравнения (кроме Is и Like) для указания диапазона значений. Если этот параметр не указан, автоматически вставляется ключевое слово Is.

statements-nНеобязательное свойство. Одно или несколько заявлений, выполненных, если testexpression совпадает с какой-либо частью expressionlist-n.
elsestatementsНеобязательный параметр. Один или несколько операторов, которые выполняются, если testexpression не соответствует какому-либо из выражений Case.

Если testexpression совпадает с любым выражением экспрессионистов

Case, утверждения, следующие за этим пунктом Case, выполняются до следующего пункта Case или, для последнего предложения, до End Select. Затем контроль передается оператору после End Select. Если testexpression совпадает с выражением expressionlist в нескольких предложениях Case, выполняются только операторы после первого совпадения.

Предложение Case Else используется для указания того, что выражения elsestatements выполняются, если не обнаружено совпадение между testexpression и expressionlist в других предложениях Case. Хотя это необязательно, рекомендуется использовать оператор Case Else в блоке Select Case для обработки непредвиденных значений testexpression. Если

экспрессиолист Case не соответствует тестэкспрессии и не существует утверждения Case Else, выполнение продолжается в заявлении, следующем end Select.

Используйте несколько выражений или диапазонов в каждом пункте Case . Например, допустима следующая строка.

Case 1 To 4, 7 To 9, 11, 13, Is > MaxNumber 

Примечание

Оператор сравнения Is — не то же самое, что ключевое слово Is, используемое в операторе Select Case.

Вы также можете указать диапазоны и несколько выражений для строк символов. В следующем примере Case everythingсовпадает со строками, которые точно равны строкам, nuts soup которые находятся между алфавитным порядком и в алфавитном порядке, TestItemи текущим значением :

Case "everything", "nuts" To "soup", TestItem 

Операторы Select Case могут быть вложенными. Каждое вложенное заявление Select Case должно иметь совпадающий конечный выбор .

Пример

В этом примере оператор Select Case используется для оценки значения переменной. Второе предложение Case содержит значение оцениваемой переменной, поэтому выполняется только связанный с ним оператор.

Dim Number 
Number = 8    ' Initialize variable. 
Select Case Number    ' Evaluate Number. 
Case 1 To 5    ' Number between 1 and 5, inclusive. 
    Debug. Print "Between 1 and 5" 
' The following is the only Case clause that evaluates to True. 
Case 6, 7, 8    ' Number between 6 and 8. 
    Debug.Print "Between 6 and 8" 
Case 9 To 10    ' Number is 9 or 10. 
    Debug.Print "Greater than 8" 
Case Else    ' Other values. 
    Debug.Print "Not between 1 and 10" 
End Select

См. также

  • Использование заявлений Select Case
  • Типы данных
  • Операторы
  • Операторы

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Пример оператора Select Case. VBA для чайников

Пример оператора Select Case. VBA для чайников

ВикиЧтение

VBA для чайников
Каммингс Стив

Содержание

Пример оператора Select Case

Здесь явно не помешает пример, показывающий, как в действительности может выглядеть структура Select Case.

Select Case objRol l OfFi l m.Type

Case «Слайдовая»

intСлайдовые = intСлайдовые + 1

Case «Цветная негативная»

intЦветныеНегативные = intЦветныеНегативные + 1

Case «ЧБ негативная»

intЧБнегативные = intЧБнегативные + 1

.Case Else

MgaBox «Неизвестный тип пленки.»

End Select

В основном этот фрагмент программного кода делает то же, что и приведенный выше программный код для примера из раздела об операторах If. . .ElseIf (опущена только проверка срока хранения). Правда, с тех пор наш гипотетический объект, представляющий ролик пленки, похоже, был немного модифицирован — информация о цветностибесцветности пленки теперь тоже представляется свойством Туре, а не отдельным свойством Color, как раньше.

А если дело обстоит таким образом, то программе приходится работать только с одним значением — со значением, возвращаемым свойством Туре.

— но сравнивается это значение с несколькими из допустимых. Так что Select Case — это как раз то, что для нашего случая доктор прописал.

Первое применение оператора Case в данном примере эквивалентно применению If objRollOf Film.Type = «Слайдовая» Then, т.е. если свойство Туре объекта равно «Слайдовая», то программа выполняет следующий оператор, в противном случае она перейдет ко второму оператору Case.

Заметьте, что знака операции, присутствие которого кажется на первый взгляд логичным, в критериях нет. Причина в том, что в операторах Select Case равенство в качестве операции сравнения просто подразумевается.

Простой пример использования функции select

Простой пример использования функции select Теперь мы переделаем код нашего получателя внеполосных данных и вместо сигнала SIGURG будем использовать функцию select. В листинге 24.3 показана принимающая программа.Листинг 24.3. Принимающая программа, в которой (ошибочно)

Пример: очереди сообщений Posix и функция select

Пример: очереди сообщений Posix и функция select Дескриптор очереди сообщений (переменная типа mqd_t) не является «обычным» дескриптором и не может использоваться с функциями select и poll (глава 6 [24]). Тем не менее их можно использовать вместе с каналом и функцией mq_notify. (Аналогичный

Проверка условий в операторах Select Case

Проверка условий в операторах Select Case Структура Select Case не использует явным образом полные условные выражения, подобные тем, о которых шла речь выше (см. раздел «Курс на использование условных выражений»). Вы должны разбить каждое условие на две части, представленные как

РАСШИРЕНИЕ ОПЕРАТОРА if С ПОМОЩЬЮ else

РАСШИРЕНИЕ ОПЕРАТОРА if С ПОМОЩЬЮ else      Простейшей формой оператора if является та, которой мы только что воспользовались: if(выражение)оператор     Обычно под выражением здесь понимают условное выражение, с его помощью сравниваются значения двух величин (например x > y

Пример 10-24.

Использование case

Пример 10-24. Использование case #!/bin/bashecho; echo «Нажмите клавишу и затем клавишу Return.»read Keypresscase «$Keypress» in [a-z] ) echo «буква в нижнем регистре»;; [A-Z] ) echo «Буква в верхнем регистре»;; [0-9] ) echo «Цифра»;; * ) echo «Знак пунктуации, пробел или что-то другое»;;esac # Допускается указыватль

Пример 10-25. Создание меню с помощью case

Пример 10-25. Создание меню с помощью case #!/bin/bash# Грубый пример базы данныхclear # Очистка экранаecho » Список»echo » ——«echo «Выберите интересующую Вас персону:»echoecho «[E]vans, Roland»echo «[J]ones, Mildred»echo «[S]mith, Julie»echo «[Z]ane, Morris»echoread personcase «$person» in# Обратите внимание: переменная взята в кавычки.

Пример 10-26. Оператор case допускает использовать подстановку команд вместо анализируемой переменной

Пример 10-26. Оператор case допускает использовать подстановку команд вместо анализируемой переменной #!/bin/bash# Подстановка команд в «case».case $( arch ) in # команда «arch» возвращает строку, описывающую аппаратную апхитектуру.i386 ) echo «Машина на базе процессора 80386»;;i486 ) echo «Машина на базе

Пример A-18. Генерация простых чисел, с использованием оператора деления по модулю (остаток от деления)

Пример A-18. Генерация простых чисел, с использованием оператора деления по модулю (остаток от деления) #!/bin/bash# primes.sh: Генерация простых чисел, без использования массивов.# Автор: Stephane Chazelas.# Этот сценарий не использует класический алгоритм «Решето Эратосфена»,#+ вместо него

18.8.2. Прекращение выполнения оператора case

18.8.2. Прекращение выполнения оператора case Рассмотрим следующий пример. В сценарии выполняется бесконечный цикл до тех пор, пока пользователь не введет число, большее 5. Для прерывания цикла и возврата в командную строку интерпретатора используется команда break.$ pg

Отправка с сайта оператора

Отправка с сайта оператора На сегодняшний день уже, наверное, все операторы поддерживают отправку SMS со своего сайта. Сообщения, правда, можно отправить только абонентам данного оператора, но этого, как правило, бывает достаточно.Итак, к практике. Сейчас мы рассмотрим

Оператор Select Case (VBA) | Microsoft Узнайте

Редактировать

Твиттер LinkedIn Фейсбук Эл. адрес

  • Статья
  • 2 минуты на чтение

Выполняет одну из нескольких групп операторов в зависимости от значения выражения.

Синтаксис

Select Case testexpression
[ Case expressionlist-n [ statements-n ]]
[ Case Else [ elsestatements ]]
End Select

The Select Case statement синтаксис состоит из следующих частей:

Часть Описание
тестовое выражение Обязательно. Любое числовое выражение или строковое выражение.
список-выражений-n Требуется, если появляется Case .

Список с разделителями одной или нескольких следующих форм: выражение , выражение To выражение , Is оператор сравнения выражение .

Ключевое слово от до задает диапазон значений. Если вы используете ключевое слово от до , меньшее значение должно стоять перед до 9.0024 .

Используйте ключевое слово Is с операторами сравнения (кроме Is и Like ), чтобы указать диапазон значений. Если оно не указано, ключевое слово Is вставляется автоматически.

заявления-n Дополнительно. Один или несколько операторов выполняются, если testexpression соответствует любой части expressionlist-n .
elsestatements Дополнительно. Один или несколько операторов выполняются, если testexpression не соответствует ни одному из условий Case .

Если testexpression соответствует любому выражению Case список_выражений , операторов , следующих за этим предложением Case , выполняются до следующего Case предложения до последнего предложения 9 или, для последнего предложения 9 Выберите . Затем управление переходит к оператору, следующему за End Select . Если testexpression соответствует expressionlist выражение в более чем одном предложении Case выполняются только операторы, следующие за первым совпадением.

Предложение Case Else используется для указания операторов else , которые должны быть выполнены, если не будет найдено совпадение между тестовым выражением и списком выражений в любом из других вариантов выбора Case . Хотя это и не обязательно, рекомендуется иметь в своем операторе Case Else .0023 Выберите блок Case для обработки непредвиденных значений testexpression . Если нет Case списка выражений , соответствующего testexpression и нет оператора Case Else , выполнение продолжается с оператора, следующего за End Select .

Используйте несколько выражений или диапазонов в каждом предложении Case . Например, допустима следующая строка:

 Случай 1–4, 7–9, 11, 13, Is > MaxNumber
 

Примечание

Оператор сравнения Is не совпадает с ключевым словом Is , используемым в операторе Select Case .

Вы также можете указать диапазоны и несколько выражений для строк символов. В следующем примере Case соответствует строкам, точно равным все , строкам, попадающим между орехи и суп в алфавитном порядке, и текущему значению TestItem :

 Кейс "Все", "Орехи" К "Супу", TestItem
 

Операторы Select Case могут быть вложенными. Каждый вложенный оператор Select Case должен иметь соответствующий оператор End Select .

Пример

В этом примере оператор Select Case используется для оценки значения переменной. Второе предложение Case содержит значение оцениваемой переменной, поэтому выполняется только оператор, связанный с ним.

 Тусклый номер
Число = 8 'Инициализировать переменную.
Выберите номер дела ' Оценить номер.
Case 1 To 5 ' Число от 1 до 5 включительно.
    Debug.Print "Между 1 и 5"
' Ниже приведено единственное предложение Case, которое оценивается как True.
Случай 6, 7, 8 'Число от 6 до 8.
    Debug.Print "Между 6 и 8"
Случай 9-10 'Число 9 или 10.
    Debug.Print "Больше 8"
Case Else ' Другие значения.
    Debug.Print "Не между 1 и 10"
Конец выбора
 

См. также

  • Использование операторов Select Case
  • Типы данных
  • Операторы
  • Заявления

Поддержка и отзывы

У вас есть вопросы или отзывы об Office VBA или этой документации? См. раздел Поддержка и отзывы Office VBA, чтобы узнать, как вы можете получить поддержку и оставить отзыв.

VBA Select Case Statement — Automate Excel

В этой статье

  • Выбрать пример примера
  • Синтаксис оператора. – Text
  • Верхний и нижний регистр
  • Case Like
    • Case Like – A Failed Test
    • Case Like – The Right Way
  • Case – Colon
  • Выбор случая — и/или — несколько условий
  • Вложенные операторы case
  • Оператор Case и оператор If
  • Примеры выбора VBA
      • Пример 1. Оператор Case, определяемая пользователем функция (UDF)
      • Пример 92.007 Имя тестового листа / Заявление о цикле
      • Пример 3. Выбор случая — значение ячейки
      • Пример 4. Выбор случая — даты
      • Пример. 5 Проверьте, является ли число нечетным или четным
      • Пример. 6 Проверка, если дата находится в будний день или в выходные дни
  • VBA Select Case в Access
  • В VBA оператор Select Case является альтернативой оператору If-Then , позволяя проверить, выполняются ли условия, запуская специальный код для каждого условия. Оператор Select предпочтительнее оператора If, когда нужно обработать несколько условий.

    Пример Select Case

    В этом примере пользователю выдается сообщение YesNoCancel MessageBox и проверяется, какой вариант выбрал пользователь:

     Sub Select_Case_Yes_No_Cancel()
        Dim nResult As VbMsgBoxResult
        
        nResult = MsgBox("...", vbYesNoCancel)
        
        Выберите случай nResult
            Дело vbДа
                MsgBox "Да"
            Случай vbНет
                MsgBox "Нет"
            Дело vbCancel
                MsgBox "Отмена"
        Конец выбора
    End Sub 

    Ниже мы записали эквивалент, используя вместо этого оператор If. Вы заметите, что оператор Case Select требует немного меньшего набора текста — это преимущество усиливается при тестировании нескольких критериев.

     Sub If_Yes_No_Cancel()
        Dim nResult As VbMsgBoxResult
        
        nResult = MsgBox("...", vbYesNoCancel)
        
        Если нРезультат = vbДа Тогда
            MsgBox "Да"
        ИначеЕсли nResult = vbNo Тогда
            MsgBox "Нет"
        ИначеЕсли nResult = vbCancel Тогда
            MsgBox "Отмена"
        Конец, если
    End Sub 

    Синтаксис оператора Case

    Синтаксис оператора Select Case следующий:

     Select Case [Test Expression]
        Дело [Условие 1]
            [Действие, если условие 1 верно]
        Дело [Условие 2]
            [Действие, если условие 2 верно]
        Дело [Условие №]
            [Действие, если условие n верно]
        Дело еще
            [Действие, если ни одно из них не соответствует действительности]
    Конец выбора 

    Где:

    [Тестовое выражение] — значение для оценки. Обычно это переменная.

    [Действие, если условие n истинно] — Это просто код для запуска, если условие выполнено (так же, как с оператором If)

    [Условие n] — Это условие для проверки. Есть много разных способов проверить условия. Мы обсудим их ниже.

    Оператор Case выполнит код для ПЕРВОГО условия, которое признано ИСТИННЫМ. Если не выполняется ни одно условие, код не будет выполняться, если только не будет добавлено предложение Else.

    Критерии выбора случаев

    Выбор случаев можно использовать для оценки как числовых значений, так и текста. Сначала мы обсудим, как использовать Select Cases для вычисления числовых выражений.

    Точное совпадение — числа

    Вы можете легко проверить точное совпадение с помощью оператора Case:

     Case 10 

    или добавить запятые для проверки точного совпадения с несколькими числами:

     Case 20, 30, 40 
     Sub Точное соответствие_числа()
        Dim n как целое число
        n = CInt(InputBox(". .."))
        
        Выберите случай n
            Случай 10
                'Если n равно 10, то
            Случай 20, 30, 40
                ' Если n равно 20/30/40, то
            Дело еще
                ' Если n не равно 10/20/30/40, то
        Конец выбора
        
    Конец суб 

    Диапазоны

    Вы можете проверить, попадает ли число в диапазон, например:

     Случай от 55 до 74 

    Эта процедура создаст буквенный балл для учащегося на основе его числового балла:

     Sub Calc_Grade()
    Dim Score как целое число
    Dim LetterGrade As String
    
        Score = InputBox("Введите балл студента")
        
        Выберите оценку дела
            Случай от 90 до 100
                LetterGrade = "А"
            Случай 80–90
                LetterGrade = "В"
            Случай 70–80
                LetterGrade = "С"
            Случай 60–70
                LetterGrade = "D"
            Дело еще
                LetterGrade = "F"
        Конец выбора
        
        MsgBox "Оценка учащегося: " & LetterGrade
        
    End Sub 

    Вы также можете проверить диапазоны с помощью Case Is

    Select Case Is

     Case < 55
    'Ничего не делать
    Случай <= 74
    MsgBox "В пределах досягаемости" 

    Помните, что оператор Case будет выполнять код ТОЛЬКО для первого совпадения.

    В ходе этой процедуры оценка учащегося будет рассчитываться с использованием Case Is вместо Case To.

     Sub Select_Case_Is_Grade()
        Dim Score как целое число
        Dim LetterGrade As String
        
        Score = InputBox("Введите балл студента")
        
        Выберите оценку дела
            Дело >= 90
                LetterGrade = "А"
            Дело >= 80
                LetterGrade = "В"
            Дело >= 70
                LetterGrade = "С"
            Дело >= 60
                LetterGrade = "D"
            Дело еще
                LetterGrade = "F"
        Конец выбора
        
        MsgBox "Оценка учащегося: " & LetterGrade
        
    Конец суб 

    Кодирование VBA стало проще

    Прекратить поиск кода VBA в сети. Узнайте больше об AutoMacro — конструкторе кода VBA, который позволяет новичкам создавать процедуры с нуля с минимальными знаниями в области программирования и множеством функций, позволяющих сэкономить время для всех пользователей!

    Узнать больше

    Case Else

    Вы можете добавить «Case Else» в конец вашего Case Statement, чтобы сделать что-то, если не выполняются никакие условия:

     Case Else 

    См. конец предыдущего примера кода, чтобы узнать, как можно использовать Case Else. .

    Select Case — Оператор Text & Like

    До сих пор наши примеры Select Case работали только с числами. Вы также можете использовать операторы Select Case с текстом.

    Точное совпадение – текст

    Вы можете проверить, соответствует ли выражение точной фразе, например:

     Случай "Beets" 

    Или используйте запятые, чтобы проверить, соответствует ли выражение точно более чем одной фразе:

     Случай "Apple" , "Банан", "Апельсин" 

    В сборе это выглядит так:

     SubExactMatch_Food()
    
    Выберите диапазон регистра ("a1"). Значение
        Дело "Свекла"
            MsgBox "Овощи"
        Корпус "Яблоко", "Банан", "Апельсин"
            MsgBox "Фрукты"
    Конец выбора
    
    End Sub 

    Программирование VBA | Генератор кода работает на вас!

    Верхний и нижний регистр

    По умолчанию VBA чувствителен к регистру . Это означает, что VBA считает «текст» отличным от «текста». Чтобы отключить чувствительность к регистру, добавьте Option Compare Text вверху вашего модуля:

     Option Compare Text 

    В этом примере функция выбора регистра не будет учитывать регистр при работе с текстом:

     Option Compare Text
    
    Sub ExactMatch_Food()
    
    Выберите диапазон регистра ("a1"). Значение
        Дело "Свекла"
            MsgBox "Овощи"
        Корпус "Яблоко", "Банан", "Апельсин"
            MsgBox "Фрукты"
    Конец выбора
    
    End Sub 

    Case Like

    Оператор Like позволяет проводить неточные сравнения. Если текст совпадает, Like возвращает TRUE, если не совпадает, возвращает FALSE. Это упрощает использование оператора Like с операторами If, однако он не будет работать так же легко с операторами Case.

    Case Like — тест не пройден

    Следующий код демонстрирует, что оператор Like не работает с Select Case:

     Sub Select_Case_Like_DoesnotWork()
        Тусклое слово как строка
        слово = "КАКАО"
        
        Выберите регистровое слово
            Падежное слово Like "*C*C*"
                MsgBox "Хорошо"
            Дело еще
                MsgBox "Не хорошо"
        Конец выбора
    End Sub 
    Case Like – Правильный способ

    Однако мы можем добавить выражение TRUE, чтобы оператор Select работал с оператором Like:

     Sub Select_Case_Like_CorrectWay()
        Тусклое слово как строка
        слово = "КАКАО"
        
        Выберите «Регистр верно»
            Падежное слово Like "*C*C*"
                MsgBox "Хорошо"
            Дело еще
                MsgBox "Не хорошо"
        Конец выбора
    End Sub 

    Case — двоеточие

    При использовании оператора Case вы можете добавить столько строк кода, сколько хотите для каждого условия. Однако, если вам нужно запустить только одну строку кода. Вы можете использовать двоеточие ( : ), чтобы написать все в одной строке.

    Вот тот же пример оценки учащегося, что и раньше, за исключением использования двоеточия для сокращения кода:

     Sub Calc_Grade_colon()
    Dim Score как целое число
    Dim LetterGrade As String
    
        Score = InputBox("Введите балл студента")
        
        Выберите оценку дела
            Случай от 90 до 100: LetterGrade = "A"
            Случай с 80 по 90: LetterGrade = "B"
            Случай с 70 по 80: LetterGrade = "C"
            Случай от 60 до 70: LetterGrade = "D"
            Случай еще: LetterGrade = "F"
        Конец выбора
        
        MsgBox "Оценка учащегося: " & LetterGrade
        
    Конец суб 

     

    Выбор случая – И/или – Множественные условия

    Вы можете использовать операторы И/или для проверки дополнительных критериев наряду с выбором случая.

    В этом примере мы используем Select Case для переменной «возраст», но мы также хотим проверить пол. Поэтому мы используем оператор И для выполнения более сложного теста:

     Sub NestedSelectCase()
        Тусклый секс как струна
        Dim age как целое число
        
        пол = "мужской" или женский
        возраст = 15
        
        Выберите возраст дела
            Случай < 20 и пол = "мужской"
                Msgbox "Мужчина до 20 лет"
            Случай < 20 и пол = "женский"
                Msgbox "Женщина до 20 лет"
            Дело >= 20 и пол = "мужской"
                Msgbox "Мужчина старше 20 лет"
            Дело >= 20 и пол = "женский"
                Msgbox "Женщина старше 20"
        Конец выбора
    Конец суб 

    Вложенные операторы Case

    Как и операторы If, вы можете вкладывать операторы Case друг в друга:

     Sub NestedSelectCase()
        Тусклый секс как струна
        Dim age как целое число
        
        пол = "мужской" или женский
        возраст = 15
        
        Выберите возраст дела
            Случай < 20
                Выберите пол случая
                    Корпус "мужской"
                        MsgBox «Мужчина до 20 лет»
                    Корпус "женский"
                        MsgBox "Женщина до 20 лет"
                Конец выбора
            Дело >= 20 и пол = "женский"
                Выберите пол случая
                    Корпус "мужской"
                        MsgBox "Мужчина старше 20 лет"
                    Корпус "женский"
                        MsgBox "Женщина старше 20 лет"
                Конец выбора
        Конец выбора
    Конец суб 

    Автомакрос | Окончательная надстройка VBA | Нажмите для бесплатной пробной версии!

    Оператор Case и оператор If

    Чем больше условий нужно проверить, тем полезнее оператор Case по сравнению с оператором If. Давайте посмотрим на пример.

    Вот код, необходимый для проверки того, соответствует ли имя рабочего листа набору значений с использованием оператора If:

     If Name = «Budget» Or Name = «Forecast» Or Name = «Trailing12» Or _
       Name = «Flex» или Name = «OtherRatios» или Name = «Сравнение» или _
       Имя = "BudReview" Или Имя = "P&L_Review" Или Имя = "Другое" Тогда
       'Сделай что-нибудь
    Конец, если 

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

     Select Case Name
    Кейс "Бюджет", "Прогноз", "Трейлинг12", "Флекс", "Другие отношения", _
         "Сравнение", "BudReview", "P&L_Review", "Другое"
        'Сделай что-нибудь
    End Select 

    Как видите, в этом сценарии гораздо проще использовать оператор Select. Это значительно меньше печатать, и это намного легче читать.

    Примеры VBA Select Case

    Ex 1. Оператор Case, определяемая пользователем функция (UDF)

    Давайте воспроизведем приведенный выше пример расчета оценок и создадим пользовательскую функцию для расчета балла учащегося:

     Функция GetGrade(Score As Integer) As String
        
        Выберите оценку дела
            Случай от 90 до 100
                ПолучитьОценку = "А"
            Случай 80–90
                ПолучитьОценку = "В"
            Случай 70–80
                ПолучитьОценку = "С"
            Случай 60–70
                ПолучитьОценку = "D"
            Дело еще
                ПолучитьОценку = "F"
        Конец выбора
        
    Завершить функцию 

    Теперь мы можем использовать функцию GetGrade на листе Excel для быстрого подсчета оценок учащихся:

     

    Пример 2.
    Имя тестового листа/оператор цикла

    соответствуют определенным критериям:

     Sub Case_UnProtectSheet()
        Dim ws As рабочий лист
        
        Для каждого ws в рабочих листах
            Выберите Case ws.Name 'Список всех листов с коэффициентами
            Кейс "Бюджет", "Прогноз", "Трейлинг12", "Флекс", "Другие отношения", _
                 "Сравнение", "BudReview", "P&L_Review", "Другое"
                ws.Unprotect
            Конец выбора
        Следующий мс
        
    Конец суб 
    Пример 3. Выбор случая — значение ячейки

    В этом примере проверяется оценка учащегося в ячейке, и буквенная оценка выводится непосредственно в ячейку справа.

     Sub TestCellValue()
        Затемнить ячейку как диапазон
        Установить ячейку = диапазон ("C1")
    
        Выберите ячейку Case.Value
        Случай от 90 до 100
            ячейка.Смещение (0, 1) = "А"
        Случай 80–90
            ячейка.Смещение (0, 1) = "В"
        Случай 70–80
            ячейка.Смещение (0, 1) = "С"
        Случай 60–80
            ячейка. Смещение (0, 1) = "D"
        Конец выбора
    
    Конец суб 
    Пример 4. Выбор случая – даты

    Этот пример выбора случая представляет собой функцию, которая проверяет, в какой квартал попадает дата.

     Sub TestDate ()
     MsgBox GetQuarter(CDate("20.07.2019"))
    Конец сабвуфера
    
    Функция GetQuarter(dt As Date) As Integer
        Dim sht As Worksheet
    
        Выберите Case dt
            Дело CDate("01.01.2019") To CDate("31.03.2019")
                ПолучитьКвартал = 1
            Дело CDate("01.04.2019") To CDate("30.06.2019")
                ПолучитьКвартал = 2
            Дело CDate("01.07.2019") К CDate("30.09.2019")
                ПолучитьКвартал = 3
            Дело CDate("01.10.2019") To CDate("31.12.2019")
                ПолучитьКвартал = 4
        Конец выбора
    Завершить функцию 

    Поскольку это функция, вы можете использовать ее как функцию внутри Excel:

    Пример. 5 Проверить, является ли число нечетным или четным

    В этом примере проверяется, является ли число нечетным или четным.

     Sub CheckOddEven()
        Dim n как целое число
        n = InputBox("Введите число")
        
        Выберите Case n Mod 2
            Случай 0
                MsgBox "Число четное."
            Случай 1
                MsgBox "Число нечетное."
        Конец выбора
        
    Конец суб 
    Пример. 6 Проверить, выпадает ли дата на будний или выходной день

    В этих примерах проверяется, приходится ли дата на будний или выходной день.

     Sub CheckWeekDay()
        Dim dt как дата
        dt = CDate("1/1/2020")
        
        Выберите день недели дела (дт)
            Дело vbMonday
                MsgBox "Сегодня понедельник"
            Случай vbВторник
                MsgBox "Сегодня вторник"
            Дело vbСреда
                MsgBox "Сегодня среда"
            Дело vbЧетверг
                MsgBox "Сегодня четверг"
            Дело vbFriday
                MsgBox "Сегодня пятница"
            Дело vbСуббота
                MsgBox "Сегодня суббота"
            Случай vbSunday
                MsgBox "Сегодня воскресенье"
        Конец выбора
    Конец суб 
     Sub CheckWeekend()
        Dim dt как дата
        dt = CDate("1/1/2020")
        
        Выберите день недели дела (дт)
            Случай vbSaturday, vbSunday
                MsgBox "Сегодня выходные"
            Дело еще
                MsgBox "Сегодня не выходные"
        Конец выбора
    
    End Sub 

    Выбор регистра VBA в Access

    Все приведенные выше примеры работают точно так же в Access VBA, как и в Excel VBA.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *