Одним из хороших принципов программирования является принцип модульности. Процедура не должна содержать бесконечно длинный код, части которого выполняют совершенно не связанные между собой задачи. Следу помещать в каждую процедуру небольшой и функционально законченный код, который легко читать и сопровождать. Например, хорошо понимается код со следующей структурой:
Sub ГлавнаяПроцедура()
'Вызов процедуры Процедура1
Call Процедура1
'Вызов процедуры Процедура2
Call Процедура2
'Вызов процедуры Процедура3
Call Процедура3
End Sub
Sub Процедура1()
' Код процедуры
End Sub
Sub Процедура2()
' Код процедуры
End Sub
Sub Процедура3()
' Код процедуры
End Sub
Можно также встретить и следующий код:
Sub ГлавнаяПроцедура()
' Вызов процедуры Процедура1
Call Процедура1
End Sub
Sub Процедура1()
'Вызов процедуры Процедура2
Call Процедура2
End Sub
Sub Процедура2()
' Вызов процедуры Процедура3
Call Процедура3
End Sub
Sub Процедура3()
'Код процедуры
End Sub
В этих фрагментах кода процедуры не возвращают никаких результатов свой работы. Это может быть только в случае, когда эти процедуры по очереди обрабатывают какие-то общие данные, выполняя над ними определенные действия. Результатами этих действий могут быть либо сами преобразованные данные, либо новые (и тоже общие) данные.
|
|
Возможна ситуация, когда обработка данных одной процедурой зависит от результатов обработки этих данных другой процедурой, выполняемой раньше. Вполне возможно, что по каким-то причинам (пользователь неправильно ввел данные или вообще отказался от ввода, неправильно ввел числовые и другие данные) одна из процедур не подготовила данные для обработки следующей процедурой. В этом случае весь процесс обработки данных следует прекратить и в дальнейшем никаких процедур не вызывать. Т.е. просто закончить работу всей программы. При этом даже необязательно возвращаться в вызывающую процедуру, особенно если предусмотреть перед каждым выходом из программы вывод окна с сообщением о том, почему и где было прервано выполнение кода.
Для полного завершения выполнения программы с помощью VBA используйте ключевое слово End одно в отдельной строке:
End
При выполнении этого оператора VBA прекращает все выполнения операторов процедуры и функции. Любые имеющиеся переменные перестают существовать и их значения теряются.
Пример. Ввести массив А(n, n). Найти максимальный и минимальный элементы главной диагонали. Заменить все элементы главной диагонали на максимальный элемент, побочной – на минимальный. Если массив содержит нечетное число строк и столбцов, то центральный элемент заменить на 0.
Sub main()
Dim nn As Byte
'Определяем размер квадратной матрицы
nn = InputBox ("Введите размер квадратной матрицы")
'Вызываем процедуру очистки рабочего листа
Call ochistka
'Вызываем процедуру заполнения массива
Call zapolnenie(nn)