Способ №1. Перенаправление программы — КиберПедия 

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Способ №1. Перенаправление программы

2020-12-08 118
Способ №1. Перенаправление программы 0.00 из 5.00 0 оценок
Заказать работу

Это пожалуй самый популярный способ, так как при возникновении ошибки лучше указать пользователю где он ошибся и перенаправить на другой путь выполнения программы. Сделать перенаправление можно при помощи команды GoTo, но сначала нам надо дать понять программе, что мы хотим отследить ошибку - т.е. включить распознование ошибок. Делается это следующим образом. В начало кода программы мы помещаем следующую команду

On Error

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

   Sub primer1()   On Error GoTo errors   a = 10   b = InputBox("Введите число отличное от 0", "Ввод данных", "0")    c = a / b    MsgBox "Результат: " & a & "/" & b & "=" & c, vbInformation, "Ответ"   GoTo Endprimer    errors:   MsgBox "Ошибка! Вводите корректные данные", vbCritical, "Ошибка"    Endprimer:   End Sub

Поясню. При возникновении ошибки, программа с места ошибки сразу перенаправится на errors: и уже будет продолжать выполнять код с этого места. То-есть с информационного сообщения о том, что у нас возникла ошибка, после этого сообщения программа так и продолжит выполнять макрос дальше, в данном случае программа просто закончится. В случае, если ошибки нет, нам покажется результат и код перенаправится на Endprimer:, так как туда нас перенаправил GoTo.
Если Вы не хотите чтобы макрос выполнялся дальше, то можно добавить команду для выхода из макроса Exit Sub (завершение выполнения текущего макроса).

   Sub primer1()   On Error GoTo errors   a = 10   b = InputBox("Введите число отличное от 0", "Ввод данных", "0")    c = a / b     MsgBox "Результат: " & a & "/" & b & "=" & c, vbInformation, "Ответ"   GoTo Endprimer    errors:   MsgBox "Ошибка! Вводите кооректные данные", vbCritical, "Ошибка"   Exit Sub           Endprimer:   End Sub

Способ №2. Настойчивость в исправлении ошибки

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

   Sub primer2()   On Error GoTo errors   a = 10    b = InputBox("Введите число отличное от 0", "Ввод данных", "0")    c = a / b    MsgBox "Результат: " & a & "/" & b & "=" & c, vbInformation, "Ответ"   GoTo vpered    errors:   MsgBox "Ошибка! Повторите ввод", vbCritical, "Ошибка"   b = InputBox("Введите число отличное от 0", "Ввод данных", "0")   Resume    vpered:   End Sub

Тут у нас добавилась только одна новая команда Resume, которая и будет перенапрявлять программу на место возникновения ошибки, тем самым требовать от нас правильного ввода данных, и пока мы их не введём, программа так и будет требовать от нас непонятного.

Способ №3. Предупреждён. Сообщение об ошибке

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

   Sub primer3()   On Error GoTo errors           a = 10   b = InputBox("Введите число отличное от 0", "Ввод данных", "0")    c = a / b    MsgBox "Результат: " & a & "/" & b & "=" & c, vbInformation, "Ответ"    GoTo propusk   errors:   If Err.Number <> 0 Then   resultat = MsgBox("При выполнении программы произошла ошибка №" & Err.Number & _           vbNewLine & "Продолжить выполнение программы не смотря на ошибку?", _           vbYesNo + vbCritical, "Ошибка")       If resultat = vbYes Then           Resume Next       Else           Exit Sub       End If   End If   propusk:    End Sub

Тут у нас добавилось ещё одна новая команда Resume Next, которая говорит о том, что код необходимо продолжать выполнять дальше с места обнаружения ошибки, не смотря ни на что.

Способ №4. Очистка ошибки

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

   Sub primer4()   On Error Resume Next   a = 10   b = InputBox("Введите число отличное от 0", "Ввод данных", "0")    c = a / b    MsgBox "Результат: " & a & "/" & b & "=" & c, vbInformation, "Ответ"    If Err.Number <> 0 Then       p = Err.Number       Err.Clear       MsgBox "Ошибка " & p & " очищена!", vbInformation, "Уведомление"   End If    End Sub

Способ №5. Идём напролом

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

   Sub primer5()   On Error Resume Next           a = 10   b = InputBox("Введите число отличное от 0", "Ввод данных", "0")    c = a / b    MsgBox "Результат: " & a & "/" & b & "=" & c, vbInformation, "Ответ"    End Sub

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

Я думаю, что на основе этих примеров и уловок остальные способы обработки ошибок Вы сможете придумать сами, придумать такие, на какие Вам хватит фантазии.


Функция (отображение, оператор, преобразование) — математическое понятие, отражающее связь между какими-либо значениями. Можно сказать, что функция — это «закон», по которому одна величина зависит от другой величины.

Это стандартное определение, которое все знают из википедии. И в принципе уже всё понятно. Однако, хочу заметить, что в Excel, функция может быть и не математической. А, например, логической, финансовой или текстовой.

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

или на ленте выбрать вкладку Формулы и сразу откроется весь список имеющихся функций


Поделиться с друзьями:

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

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

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

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.01 с.