Начиная, с версии 5.0 в программу Excel включен, специальный язык программирования, который получил название Visual Basic for Applications (VBA).
Введение достаточно мощного языка программирования в Excel делает эту программную платформу весьма привлекательной для профессионалов, которые занимаются разработкой специализированных прикладных систем.
Разработка языка программирования VBA, встраиваемого в прикладные системы, является одним из стратегических направлений компании Microsoft. Этот язык уже интегрирован в такие программы, как Word for Windows, Power Point и ряд других. VBA позволяет создавать программные модули, меню, диалоговые окна и другие ресурсы в среде Windows. Благодаря этому языку появляется возможность значительно расширить набор функций в Excel, а также создавать функции, значения которых зависят от некоторых условий и событий. В принципе, можно полностью перепрограммировать все функции программы Excel, если в этом появилась необходимость.
Программирование табличных функций
Чтобы создать отдельный рабочий лист для программного модуля, щелкните по пиктограмме Insert Module из пиктографического меню Visual Basic (1-я пиктограмма) или вызовите директиву Module из меню Insert Macro. После этого появится новый рабочий лист "Modele1". В программном модуле нужно описать функцию на языке VBA. В окне программного модуля можно работать, как в окне небольшого текстового редактора, но при этом необходимо помнить, что Вы пишите текст программы. Описание функции должно начинаться оператором Function, за которым через пробел следуют название функции и ее аргументы, заключенные в скобки и разделенные запятыми. Затем идет собственно текст программного кода функции, а заканчиваться описание должно оператором End Function.
Если в тексте программного кода имя определяемой функции будет находиться в левой части оператора присваивания (обозначаемого знаком равенства), то присвоенное значение и будет результатом вычисления функции при заданных аргументах. В качестве примера можно рассмотреть функцию, которая вычисляет налог на добавленную стоимость.
Function NDS(Value)
NDS=Value*0.15
End Function
Встраивание функций
Щелкните по 3-й пиктограмме Object Browser из пиктографического меню VBA или вызовите одноименную директиву из меню View.
Функции, определенные пользователем, рассматриваются в программе Excel как самостоятельные объекты. В поле списка Methods/Properties: будет находиться имя новой функции. Щелкните мышью сначала по имени, а затем по командной кнопке Options, тогда откроется диалоговое окно Macro Options. В поле Description: введите поясняющий текст, который позднее будет использован Конструктором функций. В списке Function Category укажите категорию, в которую Вы хотите записать свою функцию. Например, функцию, вычисляющую налог на добавленную стоимость, следует поместить в категорию Financial. В дальнейшем Конструктор функций поместит Вашу функцию в указанную Вами категорию. Закройте окно Macro Options щелчком по командной кнопке OK, а окно Object Browser - кнопкой Close.
Применение функций
Перейдите на рабочий лист, где будет расположена таблица. Переместите указатель ячеек в ячейку, в которой будет находиться формула, и введите в нее знак равенства. Затем щелкните по 14-й пиктограмме Конструктора функций на основной пиктографической панели.
Появится диалоговое окно Конструктора функций. На первом шаге выберите категорию Financial и в правом поле найдите свою функцию NDS. Щелкните по названию этой функции, после чего перейдите к следующему шагу, щелкнув по командной кнопке Next.
Откроется второе диалоговое окно Конструктора функций. Здесь можно будет увидеть Ваш комментарий к функции, который был введен ранее в окне макроопций. Укажите единственный аргумент для этой функции Value и закройте диалоговое окно Конструктора щелчком по кнопке Finish.
В таблице появится значение, составляющее 15% величины аргумента. В таблице с этой функцией можно работать как с обычной функцией программы Excel.
Переменные и операторы
Visual Basic позволяет резервировать переменные, с указанием размера и без оного, работать с различными типами данных, использовать константы, работать с математическими операторами и функциями, использовать дополнительные операторы. Предусмотрено использование операторов циклов For Next, Do, объектов типа “ таймер” (невидимый секундомер в программе). Точность установления времени в программе составляет 1 миллисекунду, или 1/1000 сек. Запущенный таймер постоянно работает - т.е. выполняется соответствующая процедура обработки прерывания через заданный интервал времени - до тех пор, пока пользователь не остановит таймер или не отключит программу.
Типы данных | |||
Тип | Размер (байт) | Диапазон значений | Пример использования |
Integer (Целое) | от - 32768 до 32767 | Dim Birds% Birds%=37 | |
Long Integer (Длинное целое) | от - 2147483648 до 2147483647 | Dim Loan& Loan&=350,000 | |
Single-precision Floating paint (Одинарной точности с плавающей десятичной точкой) | от - 3,402823Е38 до 3,4402823Е38 | Dim Price! Price!=899.99 | |
Double-precision Floating paint (Двойной точности с плавающей десятичной точкой) | от -1,79769313486232D308 до 1,79769313486232 D308 | Dim pi# pi#=3.1415926535 | |
Currency (денежные единицы) | от -922337203685477,5808 до 922337203685477,5807 | Dim Debt@ Debt@=7600300,50 | |
String (Строка) | 1 на символ | от 0 до 65535 символов | Dim Dog$ Dog$=’pointer’ |
Boolean (Логическое) | True(истина) или False(ложь) | Dim Flag as boolean Flag=True | |
Date (Дата) | от January(Январь) 1,100, до December(Декабрь) 31,9999 | Dim Birthday as Date Birthday=#3-1-63# | |
Variant (Вариант) | 16 (для чисел); 22+1 на символ (для строк) | для всех типов данных | Dim Total Total=289.13 |
Функция | Действие |
abs(n) | Возвращает абсолютное значение n |
atn(n) | Возвращает арктангенс n в радианах |
cos(n) | Возвращает косинус угла n в радианах |
Exp(n) | Возвращает константу е в степени n |
Sgn(n) | Генерирует случайное число между 0 и 1 |
Rnd(n) | возвращает -1, если n<0; 0, если n=0; +1если n>0 |
Sin(n) | Возвращает синус угла n в радианах |
Sqr(n) | квадратный корень из n |
Str(n) | Преобразует числовое значение в строку |
Tan(n) | Возвращает тангенс угла n в радианах |
Val(n) | Преобразует строку в числовое значение |