Foreversoft.ru

IT Справочник
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Условия в vba excel

VBA-Урок 7.1. Условия (Conditions)

Условия являются очень полезными при программировании, поскольку позволяют нам выполнять действия, в зависимости от установленных критериев (используется такой же принцип как и в IF функции Excel).

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

Давайте перейдем к практике и вернемся к примеру, который мы использовали в уроке с переменными. Цель этой процедуры была в том, чтобы открыть диалоговое окно, которое бы содержало значение из строки, указанного в ячейке F5 :

Если вы введете букву в ячейку F5 , это повлечет ошибку. Мы хотим предотвратить это.

Давайте добавим условие, которое будет проверять — является ли введенное значение в ячейку F5 числом, перед тем, как код будет выполнен.

Мы воспользуемся функцией IsNumeric для проверки условия:

Нам также нужно прописать инструкции, если поставленное нами условие не выполнится:

Теперь нечисловое значения не повлечет никаких проблем.

Работая с нашим массивом, который содержит 16 строк данных, наш следующий шаг будет в проверке является ли переменная row_number: «больше чем или равно 2» и «меньше чем или равно 17».

Но сначала взглянем на операторы сравнения:

=равно
<>не равно
больше чем
>=больше или равно

и эти полезные операторы:

AND[условие1] AND [условие2]
Два условия должны быть выполнены
OR[условие1] OR [условие2]
Не менее 1 из 2 условий должно быть выполнено
NOTNOT [условие1]
Условие не должно выполниться

Теперь давайте добавим одно из выше указанных условий AND между операторов сравнения:

Если мы хотим сделать наш макрос более практичным, мы можем заменить 17 на переменную, которая бы содержала количество строк. Это бы позволило нам добавлять и удалять строки из массива без необходимости изменять этот лимит каждый раз.

Для того, чтобы сделать это, мы должны создать переменную nb_rows и добавить эту функцию.

В этом случае, мы используем функцию WorksheetFunction.CountA , которая является аналогом функции COUNTA в самом Excel.

Мы хотим, чтобы эта функция подсчитала количество непустых ячеек в первой колонке по записала полученное значение в переменную nb_rows:

ElseIf

ElseIf дает возможность добавлять дополнительные условия после IF команды:

Если УСЛОВИЕ 1 выполняется, Инструкция 1 будет выполнена и покинет оператор IF (который начинается с IF и заканчивается End If ). Если УСЛОВИЕ 2 принимает значение » ложь «, тогда будет выполнена Инструкция 2 , и если она в свою очередь возвращает » ложь «, тогда Инструкция 3 (под Else ) будет выполнена.

Далее есть пример с оценками от 1 до 6 в ячейке A1 и комментарием к этим оценкам в ячейке B1:

Select

Существует альтернатива использованию If со многими ElseIf инструкциями, а именно команда Select , которая больше подходит к такого рода ситуаций.

Читать еще:  Как ускорить работу excel

Рассмотрим пример макроса с оператором Select:

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

Возможно ли задать несколько условий в операторе If

30.05.2012, 18:26

Можно ли в условном операторе задавать несколько условий?
Можно ли в условном операторе задавать несколько условий?если да, то как?

Case if, задать несколько условий
Добрый вечер Private Sub WorkStarts() i1 = Worksheets(«Универсальный расчёт»).Cells(2.

Как задать несколько условий в одном цикле
Здравствуйте, подскажите, пожалуйста, кто знает, как задать несколько условий в одном цикле.

Когда надо задать несколько условий по скрытию поля
Что делать если надо задать несколько условий по скрытию поля? К примеру: @if(IsNewDoc; False;.

30.05.2012, 19:132
Visual Basic
31.05.2012, 14:48 [ТС]3
Visual Basic
31.05.2012, 15:014
Visual Basic
31.05.2012, 15:475
Visual Basic

Функция InStr
InStr([Start,]String1,String2[,Compare])
InStrB([Start,]String1,String2[,Compare])
Функция InStr(In String) служит для поиска номера символа(номера байта для InStrB), с которого начинается в заданной строке образец поиска. Поиск идет от указанной позиции слева направо. Поиск вхождения одной строки в другую весьма часто используемая операция. Нумерация символов всегда начинается с единицы

Примечание
В функции InStr при очень длинных строках при текстовом методе сравнения, возможно возникновение ошибки времени исполнения Stack overflow. Избежать этой ошибки можно, переведя исходную строку и образец в один регистр и перейдя на бинарное сравнение

Возвращаемое значение
Возвращает значение типа Variant(Long), указывающее позицию первого появления одной строки внутри другой

Перечень возвращаемых значений Вариант Значение, возвращаемое функцией InStr
String1 имеет нулевую длину 0
String1 имеет значение Null Null
String2 имеет нулевую длину Start
String2 имеет значение Null Null
String2 не найдена 0
String2 найдена внутри String1 Позиция, в которой обнаружено совпадение
Start > String2 0

Параметры Элемент Описание
Start Необязательный. Числовое выражение, которое задает первую позицию для каждого поиска. Если параметр опущен, поиск начинается с позиции первого символа. В том случае, когда значение параметра Start равно Null, возникает ошибка. Параметр Start является обязательным, если задан параметр Compare
String1 Обязательный. Строковое выражение,в котором ведется поиск
String2 Обязательный. Отыскиваемое строковое выражение
Compare Необязательный. Задает тип сравнения для строк. Если значение параметра Compare равно Null, возникает ошибка. В том случае, когда параметр Compare опущен,тип сравнения определяется установками оператора Option Compare

Установки
Для параметра Compare используются следующие установки: Константа Значение Описание
vbUseCompareOption -1 Сравнение выполняется с использованием установок для оператора Option Compare
vbBinaryCompare 0 Выполняется побитовое сравнение
vbTextCompare 1 Выполняется текстовое сравнение
vbDatabaseCompare 2 Только для Microsoft Access. Сравнение выполняется с применением сведений из базы данных пользователя

Добавлено через 1 минуту
Апострофф, извините, опоздал с ответом — не обновил страницу.

Операторы условия в VBA

Наиболее важные операторы условия, используемые в Excel VBA – это операторы If … Then и Select Case. Оба этих выражения проверяют одно или несколько условий и, в зависимости от результата, выполнят различные действия. Далее мы поговорим об этих двух операторах условия подробнее.

Оператор «If … Then» в Visual Basic

Оператор If … Then проверяет условие и, если оно истинно (TRUE), то выполняется заданный набор действий. Также может быть определён набор действий, которые должны быть выполнены, если условие ложно (FALSE).

Синтаксис оператора If … Then вот такой:

If Условие1 Then
Действия в случае, если выполняется Условие1
ElseIf Условие2 Then
Действия в случае, если выполняется Условие2
Else
Действия в случае, если не выполнено ни одно из Условий
End If

В этом выражении элементы ElseIf и Else оператора условия могут не использоваться, если в них нет необходимости.

Ниже приведён пример, в котором при помощи оператора If … Then цвет заливки активной ячейки изменяется в зависимости от находящегося в ней значения:

Обратите внимание, что как только условие становится истинным, выполнение условного оператора прерывается. Следовательно, если значение переменной ActiveCell меньше 5, то истинным становится первое условие и ячейка окрашивается в зелёный цвет. После этого выполнение оператора If … Then прерывается и остальные условия не проверяются.

Более подробно о применении в VBA условного оператора If … Then можно узнать на сайте Microsoft Developer Network.

Оператор «Select Case» в Visual Basic

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

Синтаксис оператора Select Case вот такой:

Select Case Выражение
Case Значение1
Действия в случае, если результат Выражения соответствует Значению1
Case Значение2
Действия в случае, если результат Выражения соответствует Значению2

Case Else
Действия в случае, если результат Выражения не соответствует ни одному из перечисленных вариантов Значения
End Select

Элемент Case Else не является обязательным, но его рекомендуется использовать для обработки непредвиденных значений.

В следующем примере при помощи конструкции Select Case изменяется цвет заливки текущей ячейки в зависимости от находящегося в ней значения:

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

Visual Basic
Case Is Case 6, 7, 8, 9Так можно проверить, совпадает ли значение Выражения с одним из перечисленных значений. Перечисленные значения разделяются запятыми.
Case 10Так проверяется, совпадает ли значение Выражения с заданным значением.
Case 11 To 20Таким образом можно записать выражение для проверки, удовлетворяет ли значение Выражения условию вида от 11 до 20 (эквивалентно неравенству “11 Case ElseВот так, при помощи ключевого слова Else, указываются действия для того случая, если значение Выражения не соответствует ни одному из перечисленных вариантов Case.

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

Более подробную информацию о работе VBA оператора Select Case можно найти на сайте Microsoft Developer Network.

Канал в Telegram

Вы здесь

Работа с условием If в VBA

Условный оператор IF является основной частью любого языка программирования. Без него не обойтись при написании даже небольшой программы, в которой необходимо принять некоторое решение. Синтаксис конструкции If следующий:

If условие Then [Команда 1] [Else Команда 2]

Если перевести, то получается: Если условие Тогда Команда 1 Иначе Команда 2

Т.е. если условие истинно тогда выполняется некоторая Команда (Команды) иначе выполняются другие Команды.В этом варианте конструкции IF будет выполнено только одна Команда. Else можно пропустить.

Примечание: При такой форме условия в Visual Basic после ключевого слова Then обязательно должна идти команда, а так же слова Then и Else должны находиться на той же строке что и IF, иначе интерпретатор выдаст ошибку. Если для удобства восприятия необходимо Команду 1 перенести на новую строку, то необходимо воспользоваться символом «_» после Then.

If условие Then _
[Команда 1] _
[Else Команда 2]

При таком варианте использования условия будет выполнено только одно действие. Если необходимо выполнить множество действий после Then или Else, то воспользуйтесь следующим вариантом написания условия:

If условие Then
[Команда 1]
[Команда 2]
.
[Else]
[Команда 3]
[Команда 4]
End If

Ключевое слово Else можно так же, как и в первом варианте не использовать, если нет необходимости.

И третий вариант конструкции, при котором происходит проверка условия, если первое условие не выполнено

If условие 1 Then
[Команда 1]
[Команда 2]
.
[ElseIf условие 2 Then
[Команда 3]
[Команда 4]
[Else
[Команда 5]
[Команда 6]
End If

В условиях также можно использовать логическое И (And), ИЛИ(Or) и отрицание НЕ (Not).
Рассмотрим несколько примеров использования выше перечисленных конструкций.

Пример 1

If a=b Then msgbox «а равняется b» Else msgbox «а не равно b»

Пример 2

В этом варианте Else не используем.
If a=b Then msgbox «а равняется b»

Пример 3

Используя «_» для интерпретатора Basic такая запись равносильна записи в Примере 1
If a=b Then _
msgbox «а равняется b» _
Else msgbox «а не равно b»

Пример 4
If a=b Then
msgbox «а равняется b»
a = a+b
Else
msgbox «а неравно b»
c = b
End If

Пример 5
If a=b Then
msgbox «а равняется b»
ElseIf a>b Then
msgbox «а больше b»
Else
msgbox «b больше a»
End If

Ссылка на основную публикацию
Adblock
detector