If vba excel не работает

Обновлено: 05.07.2024

Я не волшебник. Я только учусь


Проверка на вводимые значения. Это должно быть действилельное число не больше единицы
Грубо говоря, значение в А1, А2, С1, С2 должно быть не больше 1 Автор - light26
Дата добавления - 05.03.2013 в 19:04

Автор - Serge_007
Дата добавления - 05.03.2013 в 19:13

Sub Проверка()
If cell("A1") < cell("A2") Then MsgBox "Смотри че пишешь"
End If
End Sub

Либо Range("A1"), либо Cell s (1, 1)

Sub Проверка()
If cell("A1") < cell("A2") Then MsgBox "Смотри че пишешь"
End If
End Sub

Либо Range("A1"), либо Cell s (1, 1) Michael_S

Sub Проверка()
If cell("A1") < cell("A2") Then MsgBox "Смотри че пишешь"
End If
End Sub

Либо Range("A1"), либо Cell s (1, 1) Автор - Michael_S
Дата добавления - 05.03.2013 в 19:18

Serge_007,
Ниче не понял
Не, первое-то условие я уже задал (запрет ввода значений больше 1), а второе условие как? Serge_007,
Ниче не понял
Не, первое-то условие я уже задал (запрет ввода значений больше 1), а второе условие как? light26 Если для А1 стоит ограничение <=1, то для А2 достаточно поставить ограничение в виде <=A1, само собой А2 будет не больше 1 Если для А1 стоит ограничение <=1, то для А2 достаточно поставить ограничение в виде <=A1, само собой А2 будет не больше 1 Pelena



Ну да
Автор - Pelena
Дата добавления - 05.03.2013 в 19:39
Спасибо, добрый человек
А можно, для особо одаренных, пояснить про cell и range.
Ну, cell - это ячейка. А range?
И как диапазоны указывать?
Спасибо, добрый человек
А можно, для особо одаренных, пояснить про cell и range.
Ну, cell - это ячейка. А range?
И как диапазоны указывать? light26
Спасибо, добрый человек
А можно, для особо одаренных, пояснить про cell и range.
Ну, cell - это ячейка. А range?
И как диапазоны указывать? Автор - light26
Дата добавления - 05.03.2013 в 19:46 Pelena, Serge_007
Стоп, стоп, стоп!
Вы меня совсем запутали.
См. файл Pelena, Serge_007
Стоп, стоп, стоп!
Вы меня совсем запутали.
См. файл light26

Я не волшебник. Я только учусь

[/vba] не работают Автор - light26
Дата добавления - 05.03.2013 в 20:08

MS Excel 2007 and 2010.
-------------------------------
С Уважением, Даулет

[/vba] Автор - ABC
Дата добавления - 05.03.2013 в 20:10
Единственное неудобство, что проверка разная для С2, С4 и для С3, С5
Единственное неудобство, что проверка разная для С2, С4 и для С3, С5 Pelena
Единственное неудобство, что проверка разная для С2, С4 и для С3, С5 Автор - Pelena
Дата добавления - 05.03.2013 в 20:21 ABC, ой, это очень тяжело
Что значит If Target.Column <> 3 Then Exit Sub ? Завершить выполнение кода, если . что-то с третьим столбцом связано, да?
Следующая строка кода мине вообще не понятна ABC, ой, это очень тяжело
Что значит If Target.Column <> 3 Then Exit Sub ? Завершить выполнение кода, если . что-то с третьим столбцом связано, да?
Следующая строка кода мине вообще не понятна light26

Ну да. А при больших объемах это серьезный минус.
Но, в очередной раз спасибо. Все-таки мне до вас еще расти, и расти, и расти, и расти. )))
Пока даже мозги не работают правильно

Пойду домой. Подумаю над своим поведением по дороге

Ну да. А при больших объемах это серьезный минус.
Но, в очередной раз спасибо. Все-таки мне до вас еще расти, и расти, и расти, и расти. )))
Пока даже мозги не работают правильно

Пойду домой. Подумаю над своим поведением по дороге light26

Я не волшебник. Я только учусь

Ну да. А при больших объемах это серьезный минус.
Но, в очередной раз спасибо. Все-таки мне до вас еще расти, и расти, и расти, и расти. )))
Пока даже мозги не работают правильно

Пойду домой. Подумаю над своим поведением по дороге Автор - light26
Дата добавления - 05.03.2013 в 20:27

VBA If Statement

Краткое руководство по VBA If Statement

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

Что такое IF и зачем оно тебе?

Оператор VBA If используется, чтобы позволить вашему коду делать выбор, когда он выполняется.

Вам часто захочется сделать выбор на основе данных, которые читает ваш макрос.

Например, вы можете захотеть читать только тех учеников, у которых оценки выше 70. Когда вы читаете каждого учащегося, вы можете использовать инструкцию If для проверки отметок каждого учащегося.

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

Тестовые данные

Мы собираемся использовать следующие тестовые данные для примеров кода в этом посте.

VBA If Sample Data

Формат операторов VBA If Then

Формат оператора If Then следующий

За ключевым словом If следуют условие и ключевое слово Then

Каждый раз, когда вы используете оператор If Then, вы должны использовать соответствующий оператор End If.

Когда условие оценивается как истинное, обрабатываются все строки между If Then и End If.

Чтобы сделать ваш код более читабельным, рекомендуется делать отступы между операторами If Then и End If.

Отступ между If и End If

Отступ означает просто переместить строку кода на одну вкладку вправо. Правило большого пальца состоит в том, чтобы сделать отступ между начальным и конечным операторами, такими как:

Sub … End Sub
If Then … End If
If Then… ElseIf … Else … Endif
For … Next
Do While … Loop
Select Case … End Case

Для отступа в коде вы можете выделить строки для отступа и нажать клавишу Tab. Нажатие клавиш Shift + Tab сделает отступ кода, т.е. переместит его на одну вкладку влево.

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

VBA If

Если вы посмотрите на примеры кода на этом сайте, вы увидите, что код имеет отступ.

Простой пример If Then

Следующий код выводит имена всех студентов с баллами более 50.

  • Василий Кочин
  • Максим Бородин
  • Дмитрий Маренин
  • Олеся Клюева
  • Евгений Яшин

Поэкспериментируйте с этим примером и проверьте значение или знак > и посмотрите, как изменились результаты.

Условия IF

Ниже приведены примеры условий:

Вы могли заметить x = 5, как условие. Не стоит путать с х = 5, при использовании в качестве назначения.

В следующей таблице показано, как знак равенства используется в условиях и присваиваниях.

Поначалу это может показаться странным, но подумайте об этом так. Любое утверждение, начинающееся с переменной и равно, имеет следующий формат

[переменная] [=] [оценить эту часть]

Поэтому все, что находится справа от знака равенства, оценивается и результат помещается в переменную. Посмотрите на последние три строки таблицы, как:

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

Инструкция ElseIf позволяет вам выбирать из нескольких вариантов. В следующем примере мы печатаем баллы, которые находятся в диапазоне.

Важно понимать, что порядок важен. Условие If проверяется первым.

Если это правда, то печатается «Высший балл», и оператор If заканчивается.

Если оно ложно, то код переходит к следующему ElseIf и проверяет его состояние.

Давайте поменяемся местами If и ElseIf из последнего примера. Код теперь выглядит так

В этом случае мы сначала проверяем значение более 75. Мы никогда не будем печатать «Высший балл», потому что, если значение больше 85, это вызовет первый оператор if.

Чтобы избежать подобных проблем, мы должны использовать два условия. Они помогают точно указать, что вы ищете, чтобы избежать путаницы. Пример ниже показывает, как их использовать. Мы рассмотрим более многочисленные условия в разделе ниже.

Давайте расширим оригинальный код. Вы можете использовать столько операторов ElseIf, сколько захотите. Мы добавим еще несколько, чтобы учесть все наши классификации баллов.

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

Утверждение Else используется, как ловушка для всех. Это в основном означает «если бы не было условий» или «все остальное». В предыдущем примере кода мы не включили оператор печати для метки сбоя. Мы можем добавить это, используя Else.

Так что, если это не один из других типов, то это провал.

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

VBA If ElseIf Class

Используя If And/If Or

В выражении If может быть несколько условий. Ключевые слова VBA And и Or позволяют использовать несколько условий.

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

Давайте снова посмотрим на наши примеры данных. Теперь мы хотим напечатать всех студентов, которые набрали от 50 до 80 баллов.

Мы используем Аnd, чтобы добавить дополнительное условие. Код гласит: если оценка больше или равна 50 и меньше 75, напечатайте имя студента.

Вывести имя и фамилию в результаты:

  • Дмитрий Маренин
  • Олеся Клюева
  • Евгений Яшин
  • Василий Кочин
  • Александр Грохотов
  • Дмитрий Маренин
  • Николай Куликов
  • Олеся Клюева
  • Наталия Теплых
  • Дмитрий Андреев

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

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

And работает следующим образом:

Условие 1Условие 2Результат
ИСТИНАИСТИНАИСТИНА
ИСТИНАЛОЖЬЛОЖЬ
ЛОЖЬИСТИНАЛОЖЬ
ЛОЖЬЛОЖЬЛОЖЬ

Что вы заметите, так это то, что And верно только тогда, когда все условия выполняются.

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

Ключевое слово OR работает следующим образом

Условие 1Условие 2Результат
ИСТИНАИСТИНАИСТИНА
ИСТИНАЛОЖЬИСТИНА
ЛОЖЬИСТИНАИСТИНА
ЛОЖЬЛОЖЬЛОЖЬ

Что вы заметите, так это то, что OR ложно, только когда все условия ложны.

Смешивание And и Or может затруднить чтение кода и привести к ошибкам. Использование скобок может сделать условия более понятными.

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

Также есть оператор NOT. Он возвращает противоположный результат условия.

УсловиеРезультат
ИСТИНАЛОЖЬ
ЛОЖЬИСТИНА

Следующие две строки кода эквивалентны.

Помещение условия в круглые скобки облегчает чтение кода

Мы хотим проверить действительность mySheet перед его использованием. Мы можем проверить, если это Nothing.

Нет способа проверить, является ли это чем-то, поскольку есть много разных способов, которым это может быть что-то. Поэтому мы используем NOT с Nothing.

Если вы находите это немного запутанным, вы можете использовать круглые скобки, как здесь

Функция IIF

VBA имеет функцию, аналогичную функции Excel If. В Excel вы часто используете функцию If следующим образом:

= ЕСЛИ (F2 =»»,»», F1 / F2)

= If (условие, действие, если ИСТИНА, действие, если ЛОЖЬ).

VBA имеет функцию IIf, которая работает так же. Давайте посмотрим на примере. В следующем коде мы используем IIf для проверки значения переменной val. Если значение больше 10, мы печатаем ИСТИНА, в противном случае мы печатаем ЛОЖЬ.

В следующем фрагменте кода мы будем использовать функцию IIf. Код здесь намного аккуратнее.

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

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

Вы также можете вкладывать IIf-операторы, как в Excel. Это означает использование результата одного IIf с другим. Давайте добавим еще один тип результата в наши предыдущие примеры. Теперь мы хотим напечатать «Отлично», «Удовлетворительно» или «Незачетт» для каждого студента.

Используя обычный VBA, мы сделали бы это так

Используя вложенные IIfs, мы могли бы сделать это так

Использование вложенного IIf хорошо в простых случаях, подобных этому. Код прост для чтения и, следовательно, вряд ли вызовет ошибки.

Чего нужно остерегаться

Важно понимать, что функция IIf всегда оценивает как Истинную, так и Ложную части выражения независимо от условия.

В следующем примере мы хотим разделить по баллам, когда он не равен нулю. Если он равен нулю, мы хотим вернуть ноль.

Однако, когда отметки равны нулю, код выдаст ошибку «Делить на ноль». Это потому, что он оценивает как Истинные, так и Ложные утверждения. Здесь ложное утверждение, т.е. (60 / Marks), оценивается как ошибка, потому что отметки равны нулю.

Если мы используем нормальный оператор IF, он будет запускать только соответствующую строку.

Это также означает, что если у вас есть функции для ИСТИНА и ЛОЖЬ, то обе будут выполнены. Таким образом, IIF будет запускать обе функции, даже если он использует только одно возвращаемое значение. Например:

IF против IIf

В этом случае вы можете видеть, что IIf короче для написания и аккуратнее. Однако если условия усложняются, вам лучше использовать обычное выражение If. Недостатком IIf является то, что он недостаточно известен, поэтому другие пользователи могут не понимать его так же, как и код, написанный с помощью обычного оператора if.

Кроме того, как мы обсуждали в последнем разделе, IIF всегда оценивает части ИСТИНА и ЛОЖЬ, поэтому, если вы имеете дело с большим количеством данных, оператор IF будет быстрее.

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

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

Давайте возьмем наш пример DobClass сверху и перепишем его с помощью оператора Select Case.

Ниже приведен тот же код с использованием оператора Select Case. Главное, что вы заметите, это то, что мы используем “Case 85 to 100” rather than “marks >=85 And marks <=100”. , а не “marks >=85 And marks <=100”.

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

Вы можете переписать оператор select в том же формате, что и оригинальный ElseIf. Вы можете использовать Is с Case.

Вы можете использовать Is для проверки нескольких значений. В следующем коде мы проверяем, равны ли оценки 5, 7 или 9.

Попробуйте это упражнение

Мы будем использовать ячейку G1, чтобы написать имя субъекта.

Колонка I: Фамилия

Колонка J: Баллы

Колонка H: Предмет

Если ячейка G1 содержит «Геометрия», то ваш результат должен выглядеть следующим образом:

VBA If Statement

Ответ на упражнение

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

Примечание: есть много способов выполнить задачу, поэтому не расстраивайтесь, если ваш код отличается.

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

Синтаксис

Быстрые ссылки на примеры кода

Эта статья содержит несколько примеров, демонстрирующих использование If . Then . Else баланс

Компоненты

condition
Обязательный элемент. Выражение. Должен иметь значение True или False , или, или к типу данных, который неявно преобразуется в Boolean .

Если выражение является переменной, допускающей значение NULL Boolean , значением которого является Nothing, условие обрабатывается так, как если False бы выражение было, а ElseIf блоки оцениваются, если они существуют, или Else блок выполняется, если он существует.

Then
Требуется в однострочном синтаксисе; Необязательный в многострочном синтаксисе.

statements
Необязательный элемент. Один или несколько инструкций, следующих за If . Then , которые выполняются, если condition имеет значение True .

elseifcondition
Требуется, если имеется ElseIf . Выражение. Должен иметь значение True или False , или, или к типу данных, который неявно преобразуется в Boolean .

elseifstatements
Необязательный элемент. Один или несколько инструкций, следующих за ElseIf . Then , которые выполняются, если elseifcondition имеет значение True .

elsestatements
Необязательный элемент. Одна или несколько инструкций, выполняемых, если ни Предыдущая, ни condition elseifcondition выражение не имеет значение True .

End If
Завершает многострочную версию If . Then . Else блок.

Комментарии

Многострочный синтаксис

Когда If . Then . Else , проверяется condition . Если condition имеет значение True , выполняются следующие операторы Then . Если condition имеет значение False , то каждый ElseIf оператор (если таковые имеются) вычисляется по порядку. Когда True elseifcondition обнаруживается, выполняются операторы, непосредственно следующие за ними ElseIf . Если elseifcondition значение не равно True или если нет ElseIf инструкций, выполняются следующие операторы Else . После выполнения инструкций, указанных после Then , ElseIf или Else , выполнение переходит к следующей инструкции End If .

ElseIf Предложения и Else являются необязательными. Можно использовать любое количество ElseIf предложений в If . Then . Else , но ElseIf после предложения предложение не может быть указано Else . If . Then . Else операторы могут быть вложенными друг в друга.

В многострочном синтаксисе If оператор должен быть единственным оператором в первой строке. ElseIf Else Операторам, и End If может предшествовать только метка строки. .. If . Then . Else блок должен заканчиваться End If оператором.

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

Синтаксис Single-Line

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

Что следует за Then ключевым словом, проверяется, является ли оператор однострочным If . Если после Then на той же строке появляется нечто, кроме комментария, инструкция рассматривается как однострочный If оператор. Если Then параметр отсутствует, он должен быть началом многострочного If . Then . Else .

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

Пример многострочного синтаксиса

В следующем примере показано использование многострочного синтаксиса If . Then . Else баланс.

Принятие решений позволяет программистам контролировать поток выполнения сценария или одного из его разделов. Исполнение управляется одним или несколькими условными операторами.

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

Решения, условия, алгоритмы if, then, switch в VBA Excel

VBA предоставляет следующие типы решений. Нажмите следующие ссылки, чтобы проверить их данные.

If. Then - Если То

Оператор If состоит из логического выражения, за которым следуют одно или несколько операторов. Если условие называется Истинным, выполняются утверждения в условии If (s). Если условие называется False, выполняются инструкции после цикла If.

Синтаксис

Ниже приведен синтаксис оператора If в VBScript.

Диаграмма потока

Решения, условия, алгоритмы if, then, switch в VBA Excel

пример

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

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

X is Greater than Y

Если заявление состоит из логического выражения следует один или более операторов.

if..else заявление

Оператор If состоит из логического выражения, за которым следуют одно или несколько операторов. Если условие называется Истинным, выполняются утверждения в условии If (s). Если условие называется False, выполняются утверждения в разделе Else Part.

Синтаксис

Ниже приведен синтаксис оператора If Else в VBScript.

Диаграмма потока

Решения, условия, алгоритмы if, then, switch в VBA Excel

пример

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

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

Y is Greater than X

Если иное утверждение состоит из логического выражения следует один или более операторов. Если условие равно True, выполняются инструкции в операторах If . Если условие ложно, выполняется Else часть скрипта.

if . elseif..else statement

Оператор If, за которым следует один или несколько инструкций ElseIf, которые состоят из булевых выражений, а затем следуют инструкции else по умолчанию, которая выполняется, когда все условие становится ложным.

Синтаксис

Ниже приведен синтаксис оператора If Elseif-Else в VBScript.

Диаграмма потока

Решения, условия, алгоритмы if, then, switch в VBA Excel

пример

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

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

X and Y are EQUAL

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

вложенные операторы if

Оператор If или ElseIf внутри другого оператора If или ElseIf. Внутренние операторы If выполняются на основе внешних операторов If. Это позволяет VBScript легко справляться с сложными условиями.

Синтаксис

Ниже приведен синтаксис инструкции Nested If в VBScript.

пример

Для демонстрационной цели найдем тип положительного числа с помощью функции.

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

The Number is a POSITIVE Number The Number is NOT 0,1,2 or 3

Если или ElseIf заявление внутри другого, если или ELSEIF заявление.

инструкция switch

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

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

Синтаксис

Ниже приведен синтаксис оператора Switch в VBScript.

пример

Для демонстрационной цели найдем тип целого с помощью функции.

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

The Number is the Least Composite Number

Переключатель заявление позволяет переменной быть проверены на равенство в отношении списка значений.

Читайте также: