Студопедия

Главная страница Случайная лекция


Мы поможем в написании ваших работ!

Порталы:

БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика



Мы поможем в написании ваших работ!




Глава 3. Язык и система программирования

Читайте также:
  1. II. ОСНОВЫ СИСТЕМАТИКИ И ДИАГНОСТИКИ МИНЕРАЛОВ
  2. Microsoft Excel. Работа с макросами. Язык программирования Visual Basic for Application.
  3. PR как система
  4. А) Система источников таможенного права.
  5. Автоматизированная система управления гибкой производственной системой (АСУ ГПС)
  6. Автоматическая система сигнализации
  7. Автономная нервная система.
  8. Англо-американская система права (система общего права).
  9. АСУ пассажирскими перевозками. Система «ЭКСПРЕСС»
  10. Б3.ДВ1 СИСТЕМА ИСПОЛНИТЕЛЬНОЙ ВЛАСТИ РФ

Visual Basic for Application (VBA)

 

3.1. Общая характеристика языка и системы программирования VBA

Название Visual Basic for Application можно перевести как «Visual Basic для приложения». В данном случае речь идет о системе программирования языка Visual Basic («Визуальный Бейсик»), встроенной в прикладные программы (приложения) пакета MS Office: текстовый редактор MS Word, электронную таблицу Excel, программу презентаций Power Point, систему управления базами данных Access и др. Можно воспользоваться средствами VBA в любой из этих программ, чтобы расширить ее возможности (улучшить интерфейс, задать нестандартные действия или вычисления и т.п.).

Например, с помощью VBA в среде электронной таблицы Excel можно:

– создавать функции пользователя, если недостаточно возможностей стандартных встроенных функций;

– с помощью специального макрорекодера (MacroRecoder) задать автоматическую запись программного кода согласно действиям, выполненным пользователем в электронной таблице;

– создавать различные дополнительные визуальные элементы (окна, панели, кнопки и пр.).

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

Язык программирования, используемый в VBA, для записи программного кода представляет собой диалект языка Visual Basic, который в свою очередь базируется на классическом алгоритмическом языке Basic (Бейсик).

Одной из особенностей Visual Basic, а, следовательно, и VBA, является использование элементов объектно-ориентированного подхода к программированию (ООП). При этом объект – это программный элемент, у которого может быть свое отображение на экране и который содержит некоторые переменные, определяющие его свойства, а также методы управления им. Таким образом, объект позволяет инкапсулировать (объединять в нечто целое) данные вместе с кодом, предназначенным для их обработки.

Например, в VBA для Excel может использоваться более 100 встроенных объектов, находящихся на разных уровнях иерархии. Приведем названия некоторых из них: Range – блок (диапазон) ячеек, Cell – ячейка, WorkSheet – рабочий лист, DialogSheet – диалоговое окно, WorkBook – рабочая книга и т.д. Главным в иерархии объектов является объект Application, который представляет собой само приложение Excel. Он имеет более 120 свойств и 40 методов, предназначенных для установки общих параметров приложения.

Система программирования VBA представляет собой интегрированную среду разработки программ, которая включает в себя следующие компоненты: окно проекта, окно для редактирования программного кода (текста программ), окно свойств, окно просмотра объектов и др. На рисунке 13 изображено окно системы VBA c различными элементами: Project – VBA Project – окно проекта, Properties – Label 1 – окно свойств объекта, Книга1–UserForm1(UserForm) – окно создания оконной формы, Книга1–UserForm1(Code) – окно программного кода, Toolbox – панель инструментов для создания визуальных элементов.

Система программирования VBA является средой визуального программирования и позволяет достаточно легко создавать различные визуальные (видимые на экране) объекты (окна форм, кнопки, текстовые поля, надписи, списки и пр.). Пользователь с помощью специальной панели инструментов может формировать эти элементы на экране, задавая их свойства (положение на экране, размер, цвет и т.п.). При этом писать программный код не нужно (как это потребовалось бы в классических алгоритмических языках).

В системе VBA работает механизм «событие-отклик», с помощью которого осуществляется управление последовательностью выполнения процедур. Событие представляет собой некоторое действие, распознаваемое объектом. События могут возникать в результате действий пользователя или программы. В роли события может выступать нажатие клавиши на клавиатуре и т.д. Например, для визуального объекта «кнопка» событием является щелчок мышью по этой кнопке на экране.

 

Рис. 13. Окно сиcтемы программирования VBA

Чтобы объект мог правильно реагировать на событие, необходимо запрограммировать для него соответствующий отклик в виде некоторой процедуры (подпрограммы). Таким образом, программирование будет сводиться к разработке процедур-откликов созданных объектов на нужные события. При этом необязательно программировать все отклики на все возможные события для каждого объекта. Если отклик не создан на какое-то событие, то объект просто никак не будет реагировать в случае возникновения этого события (оно останется безответным).

 

3.2. Типы данных в языке VBA

 

В языке VBA так же, как в классическом языке Basic, все типы данных можно подразделять на простые и структурированные. К простым типам относятся: целый, вещественный, логический. К структурированным типам относятся: дата; массив; строка; тип, определяемый пользователем.

В таблице 3 приведены названия, обозначения, размер памяти в байтах (занимаемый значением этого типа), а также диапазоны допустимых значений для простых типов данных языка VBA и типов Variant, Object и String.

Целый тип данных в VBA представлен тремя подтипами: Byte, Integer, Long. Вещественный тип имеет 4 подтипа: Single, Double, Currency, Decimal. Логический тип обозначается как Boolean.

Таблица 3.

Тип данных Размер памяти (байты) Диапазон значений
Byte (байтовый) От 0 до 255
Integer (целый) От -32768 до 32767
Long (длинное целое) От -2147483648 до 2147483647
Boolean (логический) True, False
Single (число с плавающей запятой одинарной точности) От -3,4E+38 до -1,4E-45 и от 1,4E-45 до 3,4E+38
Double (число с плавающей запятой двойной точности) От -1,8E+308 до -4,9E-324 и от 4,9E-324 до 1,8E+308
Currency (денежный) От -922337203685477,5808 до 922337203685477,5807
Decimal (число с фиксированной запятой) От -79228162514264337593543950335 до для целых чисел; от -7,9228162514264337593543950335 до 7,9228162514264337593543950335 для чисел с фиксированной запятой (28 знаков после десятичной точки)
Object (объект) Любой указатель объекта
String (строка переменной длины) 10+длина строки От 0 до 2 миллиардов
String (строка постоянной длины) Длина строки От 0 до ≈ 65400
Variant (числовые подтипы) Любое числовое значение вплоть до границ Double
Variant (строковые подтипы) 22+длина строки Как для строки (String) переменной длины
Date (дата) January 1.100 – December 31.9999 т.е. 01.01.0100 – 31.12.9999

Тип данных Строка (String). Строковый тип данных позволяет хранить последовательности символов – строки, которые могут быть постоянной и переменной длины. Строки постоянной (фиксированной) длины – это строки, длины которых ограничены. Они описываются с помощью оператора Dim, согласно следующему синтаксису:

Синтаксис: Dim <идентификатор> As String * <длина строки>

Пример: Dim S As String *10 – описание переменной S как строки с максимальной длиной 10 символов.

В значении типа строка символов могут присутствовать любые символы кодовой таблицы ЭВМ (в том числе русские буквы и т.д.). Строковые значения в программе должны записываться в кавычках.

В VBA для строк может использоваться операция конкатенация (или сцепление) строк, которая позволяет объединять несколько строк в одну. Она обозначается либо знаком +, либо &.

Пример: S = ”Иванов”

F = S + ” ” + ”Иван”

В результате строковая переменная F примет значение ”Иванов Иван”.

 

Тип данных Variant. Данный тип является особенностью VBA (отсутствует в классическом Бейсике). Переменная типа Variant может содержать данные любого типа. Если для переменной не объявлен тип данных, то по умолчанию используется тип данных Variant.

Переменная, описанная типом Variant, фактически может в одной и той же программе принимать значения разного типа, и это не будет являться ошибкой.

 

Тип данных Массив. В VBA могут использоваться массивы двух типов: статические и динамические. Границы статического массива задаются в программе заранее с помощью оператора Dim.

Синтаксис:

Dim <идентификатор>(<номер последнего элемента>) As <тип эл-тов>

Пример: Dim X(100) As Integer - описание одномерного массива, состоящего из 100 целых чисел (плюс нулевой элемент – Х(0)) .

В VBA, как и в классическом Бейсике, индексирование массива по умолчанию начинается с нуля, т.е. индекс 0 обозначает первый элемент массива, индекс 1 – второй и т.д. Чтобы задать нумерацию элементов массива с 1, необходимо использовать команду:

Option Base 1

С помощью оператора Dim можно описывать также многомерные массивы (имеющие более одного индекса). Пример: Dim Y(10,12) As Double – описание двумерного массива вещественных чисел двойной точности, который представляет собой матрицу из 10 строк и 12 столбцов.

Динамический массив используется в том случае, когда размер массива заранее неизвестен. Для его описания также используется оператор Dim, в котором не задаются границы массива, а тип элементов определяется как Variant. Пример: Dim A() As Variant

Далее в программе, когда станет известен размер массива, может быть задан его фактический размер с помощью оператора ReDim.

Пример: ReDim A(20)

 

Описание переменных и идентификаторы типов данных

Любая переменная, используемая в программе, может быть явно описана с помощью оператора Dim.

Синтаксис: Dim <идентификатор> As <тип данных>

Пример: Dim B As Integer - описание переменной В как переменной целого типа

Однако делать явное описание переменных в VBA необязательно. Можно неявно задать тип переменной, приписав в конце ее идентификатора определенный знак (см. таблицу 4). Данную особенность VBA унаследовал от классического Бейсика.

Таблица 4.

Тип данных Знак Пример
Integer % X%=10
Long & X&=2 454 638
Single ! X!=-3.4028
Double # X#=10^(-12)
Currency @ X@=685 477.5807
String $ X$=”Фамилия”

3.3. Арифметические и логические выражения

 

В VBA арифметические выражения записываются только в одну строчку и пропуск знаков операций недопустим. Обозначение операций: + - сложение, – - вычитание, * - умножение, / - деление, ^ - возведение в степень.

Пример: Z = (X + 3.25 * X ^ 2) / (1 – X ^ 3) ^ (1/2)

Порядок выполнения операций определяется согласно их приоритетам. Самый высокий приоритет у возведения в степень. Далее выполняются умножение и деление. В последнюю очередь – сложение и вычитание. Нарушить порядок выполнения операций согласно приоритетам можно с помощью скобок.

Для записи логических выражений в VBA могут использоваться операции сравнения: < , >, =, <=, >=, <> (не равно), а также логические операции: And – конъюнкция, Or – дизъюнкция, Not – инверсия.

Пример: X>0 And X<=5 – данное логическое выражение будет истинным, если 0<X≤5.

 

3.4 Основные операторы языка VBA

 

1. Оператор присваивания.

 

Синтаксис: [Let] <идентификатор> = <выражение>

Данный оператор вычисляет значение выражения, записанного в правой части (после =), и присваивает полученное значение переменной, чей идентификатор записан в левой части (перед =).

В VBA в левой части может быть записан не только идентификатор переменной, но и идентификатор свойства какого-либо объекта.

Примеры: 1) X = 1, 2) A = ”Академия”, 3) Y = - 1.5, 4) Z = 3 + X ^ 5 – Sin (Х)

2. Условный оператор.

 

Синтаксис: If <условие> Then <оператор 1> [ Else <оператор 2> ]

 

Условный оператор находит значение условия – логического выражения. Если оно «истина», то выполняется оператор 1. Если оно «ложь», то выполняется оператор 2.

Примеры:

1) If X>0 Then Y = X^ 2 + 3 Else Y = X ^ 3 – 1 (ветвление)

2) If А>В Then А = В (обход)

 

Если требуется задать не одно, а сразу несколько действий после Then или Else, то можно воспользоваться блочной формой синтаксиса:

If <условие> Then

<оператор 1>

[ Else

<оператор 2>

… ]

End If

 

Пример:

If X>0 Then

Y = X + Sin ( 3 * X + 8 )

Z = ( Y + 1) / Y ^ 2

Else

Y = 0

Z = 1

End If

 

3. Оператор цикла с заданным числом повторений.

 

Синтаксис:

For <идентификатор> = <нач. знач.> To <кон. знач.> [ Step <шаг> ]

<оператор 1>

Next <идентификатор>

 

В заголовке оператора For указывается идентификатор управляющей переменной цикла (как правило, целочисленной).

На первом шаге управляющей переменной присваивается начальное значение и выполняется тело цикла (оператор1, …). Затем значение управляющей переменной изменяется на значение шага и опять выполняется тело цикла и т.д.. Последний раз тело цикла выполняется, когда управляющая переменная либо равна конечному значению, либо еще не превышает его.

Если шаг равен 1, его можно не указывать (действует принцип по умолчанию).

Пример:

For I = 1 To 100

Y(I) = X(I) ^ 2 + X(I) ^ 3

S1 = S1 + X(I)

S2 = S2 + Y(I)

Next I

 

4. Оператор цикла с незаданным числом повторений.

Синтаксис:

While <условие>

<оператор 1>

Wend

 

Вначале проверяется условие цикла, и если оно истинно, то выполняется тело цикла (оператр1, …) и т.д. Цикл завершается, когда при проверке условия оно окажется ложным.

Пример: While X < 15376.78

X = X + X ^ 2

S = S + X

Wend

 

3.5. Разбиение строки программы, несколько операторов в одной строке,

задание комментариев в тексте программы

 

Если строчная запись некоторого оператора в тексте программы слишком длинная, то ее можно разбить и записать на нескольких строках. Для этого в конце строки, где должен быть сделан перенос, следует последовательно записать символы «пробел»+«подчеркивание». При этом нужно помнить, о следующих правилах:

1. Нельзя разбивать переносом строковые константы.

2. Допустимо не более семи продолжений одной и той же строки.

3. Сама строка программы не может состоять более чем из 1024 символов.

Пример: If X>5 Or Y<0 Then Z = (X + Y) ^ 2 _

Else Z = (X – Y) ^ 2

Использование знака «двоеточие» позволяет размещать в одной строке программы сразу несколько операторов.

Пример: X = X + 1 : Y = X + 2 : Z = X + Y

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

В языке VBA можно использовать два способа задания комментариев по тексту программы: 1) с помощью апострофа ’ , который может быть поставлен в любом месте строки и тогда все последующие символы этой строки будут восприниматься как комментарий; 2) вместо апострофа может использоваться оператор Rem (оператор унаследован из классического Бейсика).

Примеры:

1) Dim I As Integer ’ I – переменная целого типа

2) Dim B As String

Rem B – строка символов

 

3.6. Типы процедур

 

Процедура – наименьшая единица программного кода, на которую можно ссылаться по имени и которая может выполняться независимо.

В VBA можно использовать процедуры двух типов: подпрограммы и функции.

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

 

Синтаксис(упрощенный):

Sub <идентификатор> ([<список аргументов>])

<оператор 1>

End Sub

 

Пример описания подпрограммы:

Sub Ras (X As Integer, Y As Double)

Z1 = X ^ 5 + Cos (X)

Z2 = X + Y + Sin (X)

End Sub

Данная подпрограмма по заданным значениям X и Y (аргументы) вычисляет значения переменных Z1 и Z2.

 

Примеры обращения к подпрограмме:

1) RAS 10, 12.45

В примере 1 подпрограмма RAS будет вычислять результат при значениях аргументов Х=10, Y=12,45.

 

2) A = 5 : B = – 678.32

RAS A, B

В примере 2 подпрограмма RAS в качестве исходных данных будет использовать Х=5 и Y= – 678.32.

 

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

 

Синтаксис(упрощенный):

Function <идентификатор> ([<список аргументов>])

<оператор 1>

End Function

 

Пример описания функции:

Function Y (X As Integer) As Double

Y = (X – 1) / (X + 2)

End Function

Данная функция вычисляет значение Y (имя функции) по заданному значению X (аргумент).

 

Примеры обращения к функции:

1) Z = Y (25)

В примере 1 функция Y будет вычислена при исходном значении аргумента Х=25, а ее результат будет присвоен переменной Z.

 

2) X = 12

Z = 5 * Y(X) ^ 3

В примере 2 функция Y будет вычисляться для Х=12, а ее результат будет использован для вычисления Z (по формуле Z=5*Y(X)^3).

 

Контрольные вопросы:

1. Что такое VBA?

2. Какие возможности предоставляет VBA в MS Excel?

3. Какой подход к программированию поддерживает язык VBA?

4. Что такое визуальная среда программирования?

5. Как работает механизм «событие-отклик»?

6. Какие типы данных в языке VBA относятся к простым?

7. Какие типы данных в языке VBA относятся к структурированным?

8. Какие целые типы можно использовать языке VBA?

9. Какие вещественные типы можно использовать языке VBA?

9. Какие типы строк можно использовать в языке VBA?

10. Что такое конкатенация строк?

11. В чем особенность типа Variant?

12. Какие типы массивов можно использовать в VBA?

13. Как выполняется явное и неявное описание типа данных переменных?

14. Правила записи арифметических выражений в VBA.

15. Правила записи логических выражений в VBA.

16. Синтаксис и семантика оператора присваивания.

17. Синтаксис и семантика условного оператора (If).

18. Синтаксис и семантика оператора цикла с заданным числом шагов (For).

19. Синтаксис и семантика оператора цикла с незаданным числом шагов (While).

20. Как можно разбить строку программы на несколько строк?

21. Как записать несколько операторов в одной строке?

22. Как задать комментарии в тексте программы?

23. Что такое процедура?

24. Что такое подпрограмма?

25. Синтаксис описания подпрограммы в VBA.

26. Как задать вызов подпрограммы в программе на VBA?

27. Что такое функция?

28. В чем главное отличие функции от подпрограммы?

29. Синтаксис описания функции в VBA.

30. Как задать вызов функции в программе на VBA?

 


<== предыдущая страница | следующая страница ==>
Глава 2. Основы алгоритмизации | Глава 4. Объектно-ориентированное программирование (ООП)

Дата добавления: 2014-10-17; просмотров: 471; Нарушение авторских прав




Мы поможем в написании ваших работ!
lektsiopedia.org - Лекциопедия - 2013 год. | Страница сгенерирована за: 0.012 сек.