Выбор значения из заданного списка аргументов в VBA Excel с помощью функции Choose. Синтаксис и параметры функции, примеры использования.
Функция Choose
Синтаксис
1 |
Choose(index, choice-1, [choice-2, ..., choice-n]) |
Параметры
Параметр | Описание |
---|---|
index | Выражение, возвращающее числовое значение от 1 до n, где n – количество аргументов (значений) в списке. Обязательный параметр. |
choice-1, [choice-2, …, choice-n] | Заданный список аргументов (значений) типа данных Variant. choice-1 – обязательный параметр. |
Индекс аргумента (значения), по которому осуществляется выбор, соответствует порядковому номеру аргумента в списке. Соответственно, если параметр index примет значение 2, функция Choose возвратит значение аргумента choice-2.
Тестирование функции Choose в VBA Excel 2016 показало, что дробный индекс перед определением возвращаемого значения округляется вниз. Если параметр index примет значение, выходящее за рамки диапазона от 1 до n, будет сгенерирована ошибка.
Примеры использования
Пример 1
Простой пример использования функции Choose в VBA Excel:
1 2 3 4 5 6 7 |
Sub primer1() Dim a As Integer, b As String a = InputBox("Введите число от 1 до 10", "Пример 1", 1) b = Choose(a, "один", "два", "три", "четыре", "пять", _ "шесть", "семь", "восемь", "девять", "деcять") MsgBox b End Sub |
Эта возможность функции Choose применяется в коде пользовательской функции для преобразования числовой денежной суммы в сумму прописью.
Пример 2
Пример использования функции Choose с аргументами в виде выражений:
1 2 3 4 5 6 7 8 9 |
Sub primer2() Dim a As Integer, b As String a = InputBox("Введите число от 0 до 10", "Пример 2", 0) b = Choose(a + 1, a & " (ноль)", a & " (один)", a & _ " (два)", a & " (три)", a & " (четыре)", a & " (пять)", _ a & " (шесть)", a & " (семь)", a & " (восемь)", a & _ " (девять)", a & " (де" & "cя" & "ть)") MsgBox b End Sub |
Подобный функционал в VBA Excel можно организовать с помощью многострочной конструкции оператора If…Then…Else или оператора Select Case, но с функцией Choose это получается гораздо проще и наглядней.
Текст объяснения так себе.
Примеры нормальные. Поправьте текст.
Благодарю за обратную связь. Надеюсь, сейчас объяснение лучше.
Спасибо, очень доступное объяснение.
Добрый день!
Подскажите пожалуйста, почему во втором примере индекс (a+1) необходимо сдвигать на одну, а в первом примере и так нормально работает?
Добрый день, Айжан!
Параметр
index
не может быть меньше единицы, а во втором примере переменнаяa
может принимать значение ноль.Спасибо.
Обсуждение закрыто.