Правила написания текста программы
В одной строке пишется один оператор, поэтому не нужны специальные символы «конец оператора».
Оператор может быть очень длинным и продолжаться вправо за край экрана. С таким оператором неудобно работать. В любом месте оператор можно прервать и продолжить на следующей строке. Два символа: пробел и нижнее подчеркивание говорят, что оператор продолжается на следующей строке. Оператор может продолжаться на 32 строки.
Оператор или его продолжение может начинаться с любого места строки. Программа VBA игнорирует ведущие и концевые пробелы.
Обычно в программе одни операторы подчинены другим операторам (входят в состав, образуют тело других операторов). Для лучшей читаемости текста программы принято сдвигать подчиненные операторы вправо на один щелчок табуляции (здесь 4 пробела).
Текст функции начинается с заголовка функции в первой строке, ключевое слово Function, и заканчивается оператором «конец функции» в последней строке, ключевые слова End Function. На экране ключевые слова имеют синий цвет.
Текст комментария начинается с одиночного апострофа ' в любом месте строки; на экране текст комментария имеет зеленый цвет. Программа VBA игнорирует текст комментария.
Оператор Dim <имя_ячейки> создает ячейку в оперативной памяти, цепочку байт, в которой можно хранить данные. Имя ячейки – комбинация букв и цифр (не более 64), начинающаяся с буквы. Ячейку оперативной памяти обычно называют «переменная».
Обратите внимание. Здесь и далее в тексте угловые скобки <…> в операторе обозначают место, где должно быть записано выражение такого типа, как задано в угловых скобках. Например, вместо <имя_ячейки> должно быть записано конкретное имя ячейки: p, s, kw43, …
Конструкция As <тип_ячейки> определяет тип переменной, то есть, сколько байт будет в ячейке, и какие данные будут храниться в ячейке.
Здесь используется переменная типа Double. Это ячейка оперативной памяти длиной 8 байт для хранения вещественного числа. Такие же числа типа Double хранятся в ячейках рабочего листа Excel. Поэтому при использовании функции не будет лишних преобразований данных.
В списке параметров (в скобках в заголовке функции) указан тип входных переменных a, b, c As Double, но нет оператора Dim создания переменных, потому что эти переменные созданы в вызывающей программе.
Имя функции Geron одновременно является ячейкой оперативной памяти типа Double, в которой вычисленная площадь треугольника возвращается в вызывающую программу. Описание типа As Double в конце заголовка функции, стоящее после скобок с параметрами, описывает тип ячейки, которая является именем функции.
Чтобы значение, вычисленное в теле функции, вернуть в вызывающую программу, в теле функции должен быть хотя бы один оператор присваивания для имени функции:
Geron = <значение>
Оператор присваивания чаще всего используется в программировании. В VBA он обозначается = . Оператор присваивания пересылает значение, стоящее справа от оператора, в ячейку оперативной памяти, стоящую слева.
Запуск функции из ячейки рабочего листа
Выделим любую ячейку рабочего листа и вызовем Мастера функций командой ВставкаФункция…. Написанная функция помещается в категорию Определенные пользователем. Здесь кроме функции Geron могут находиться и другие функции.
Выделяем функцию Geron. В нижней части окна Мастера функций отображено сообщение «Справка недоступна», потому что мы еще не создали описание нашей функции. Щелкаем по кнопке ОК и переходим во второе окно Мастера функций.
В формуле Герона известен ответ, если задан прямоугольный треугольник со сторонами 3, 4, 5 , который удовлетворяет теореме Пифагора. Площадь этого треугольника равна 6, что и видно во втором окне Мастера функций. Нажатие на кнопку ОК переносит результат в ячейку рабочего листа.
