Block if without end if что значит
Перейти к содержимому

Block if without end if что значит

Block If without End If

An error occurred due to an incomplete statement. This error has the following cause and solution:

  • An If statement is used without a corresponding End If statement. A multiline If statement must terminate with a matching End If statement. For nested If. End If statements, make sure there is a correctly matched If. End If structure inside each enclosing If. End If structure.

For additional information, select the item in question and press F1 (in Windows) or HELP (on the Macintosh).

Support and feedback

Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

Блок If без инструкции End If

Из-за незавершенного оператора возникла ошибка. Эта ошибка имеет следующие причины и решения:

  • Оператор If используется без соответствующего оператора End If. Многострочный оператор If должен завершаться парным оператором End If. В случае вложенных операторов If. End If следует убедиться в наличии правильно согласованной конструкции If. End If внутри каждой объемлющей структуры If. End If.

Для получения дополнительной информации выберите необходимый элемент и нажмите клавишу F1 (для Windows) или HELP (для Macintosh).

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

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

Особенности работы с управляющими структурами

Важной особенностью использования конструкций принятия решений является то, что с их помощью можно создавать так называемые вложенные структуры, когда одна конструкция располагается внутри другой. В качестве примера ниже приведен фрагмент программы, в котором в зависимости от результата заполняется один из двух массивов: любо таблица сложения, любо таблица умножения чисел от 1 до 10.

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

Следует обратить внимание на тот факт, что для окончания выполнения каждой пары вложенных циклов в этом случае использовалось одно ключевое слово Next с перечислением имен изменяемых в данный момент счетчиков. При этом первому по порядку указанному счетчику соответствует ближайшее служебное слово For. В том случае, если возникнет несовпадение имени счетчика с ключевым словом Next, компилятор выдает сообщение об ошибке.

Аналогичным образом действуют также вложенные конструкции принятия решений: в них первый по порядку End If применяется к последнему из имеющихся If, причем количество тех и других должно совпадать. Если же возникает преобладание какого-либо из этих ключевых слов, то на стадии компиляции возникает ошибка с выведением стандартного сообщения. К таким же последствиям приведет несоответствие количества служебных слов для начала и окончания различных разновидностей циклов.

Возможные системные сообщения при возникновении описанной ошибки компиляции:

  • Block If without End If — Отсутствие End If для блока If
  • Else without If — Использование Else без If
  • End If without block If — Отсутствие блока If для End If
  • For without Next — Использование For без Next
  • Next without For — Использование Next без For
  • Do without Loop — Использование Do без Loop
  • Loop without Do — Использование Loop без Do

В том случае, когда необходимо прервать выполнение цикла, применяются разновидности оператора Exit, который располагается в конструкции принятия решения. При этом для цикла For:Next используется Exit For, а для любого из циклов Do:Loop применяется Exit Do. После выполнения данного оператора происходит немедленное завершение цикла без выполнения, каких либо дополнительных операций.

Если аварийное завершение было использовано в цикле For:Next, то значение переменной-счетчика останется таким, каким оно было в момент выхода, в отличие от нормального завершения цикла, когда оно становится на единицу больше заданного конечного значения. Приведенная особенность зачастую может быть использована при решении различных задач.

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

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

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