Тип данных, определенный пользователем



МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ   Курский государственный технический университет   Кафедра информатики и прикладной математики   АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ НА VBA: ОСНОВЫ ПРОГРАММИРОВАНИЯ   Методические указания и задания для лабораторного практикума по курсу «Информатика»     КУРСК -2005 г. Составители И.Н. Емельянова, В.В. Ефремов   УДК 681.3.06   Рецензент: доцент кафедры ПОВТ, к.т.н. Титенко Е.А.     Алгоритмизация и программирование на VBA: основы программирования. Методические указания и задания для лабораторного практикума по курсу «Информатика» / Курск. гос. техн. ун-т; Сост. И.Н. Емельянова, В.В. Ефремов. Курск, 2005. 50с.   В наглядной форме излагаются приёмы работы в интегрированной среде VBA и основы программирования на VBA.     Текст печатается в авторской редакции   ИД № 06430 от 10.12.01. Подписано в печать                Формат 60х84 1/16. Печать офсетная. Усл. печ. л.    Уч.-изд. л.   . Тираж 100 экз. Заказ   . Бесплатно Курский государственный технический университет. Издательско-полиграфический центр Курского государственного технического университета. 305040 Курск, ул. 50 лет Октября, 94.

Содержание

Лабораторная работа 1

 

Создание программы на VBA.............................................................. 5

1 Цель работы.................................................................................. 5

2 Общие сведения............................................................................ 5

2.1 Языки программирования.................................................... 5

2.2 Объекты................................................................................... 7

2.3 События................................................................................. 10

3 Порядок выполнения работы.................................................. 11

4 Содержание отчёта.................................................................... 18

5 Контрольные вопросы.............................................................. 18

 

Лабораторная работа 2

 

Реализация линейных алгоритмов в VBA....................................... 19

1 Цель работы................................................................................ 19

2 Общие сведения.......................................................................... 19

2.1 Переменные в VBA.............................................................. 19

2.1.1 Типы данных в VBA...................................................... 19

2.1.2 Описание переменных................................................... 19

2.1.3 Инструкция DefТип........................................................ 22

2.1.4 Константы........................................................................ 23

2.1.5 Тип данных, определенный пользователем............... 24

2.1.6 Допустимые имена......................................................... 25

2.2 Инструкции VBA................................................................. 26

2.3 Присвоение значений.......................................................... 26

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

2.3.2 Совместимость типов.................................................... 27

2.4 Перенос строки.................................................................... 28

2.5 Комментарии........................................................................ 28

2.6 Расположение операторов в одну строку....................... 29

2.7 Операции в VBA.................................................................. 29

2.7.1 Арифметические............................................................. 29

2.7.2 Строковые........................................................................ 30

2.7.3 Операции отношения..................................................... 30

2.7.4 Логические операции..................................................... 30

2.7.5 Приоритеты операций................................................... 32

2.8 Встроенные функции VBA................................................ 32

2.8.1 Математические функции............................................. 33

2.8.2 Функции проверки типов.............................................. 34

2.8.3 Функции преобразования форматов........................... 34

2.8.4 Функции обработки строк............................................ 36

2.8.5 Функции времени и даты.............................................. 39

2.8.6 Функции, возвращающие строки................................. 43

2.8.7 Встроенные диалоговые окна...................................... 43

2.9 Схема алгоритма.................................................................. 46

3 Задание......................................................................................... 47

4 Содержание отчёта.................................................................... 47

5 Контрольные вопросы.............................................................. 47

6 Пример выполнения работы.................................................... 48

7 Индивидуальные задания......................................................... 49

 


Лабораторная работа 1
Создание программы на VBA

Цель работы

Изучение интегрированной среды разработки программ на языке Visual Basic for Application (VBA).

Общие сведения

Языки программирования

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

Алгоритм - точное предписание исполнителю совершить определенную последовательность действий для достижения поставленной цели за конечное число шагов.

Язык высокого уровня - согласно ГОСТ 19781-90 - язык программирования, понятия и структура которого удобны для восприятия человеком

Язык низкого уровня - Машинный язык - язык программирования, элементами которого являются команды компьютера. Конструкции машинного языка интерпретируются непосредственно аппаратурой.

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

Любой язык полностью определяется совокупностью правил синтаксиса и семантики

Семантика - система правил истолкования отдельных языковых конструкций. Семантика определяет смысловое значение предложений языка.

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

Каждая инструкция представляет собой предложение языка и должна соответствовать определённым для неё правилам. Синтаксис приводится при описании того или иного типа инструкций и записывается с использованием ряда условных обозначений. Например, синтаксис оператора ветвления выглядит приблизительно так

if <условие> then <инструкции then> [else <инструкции else>]

Обязательные слова, которые в конкретных инструкциях должны быть записаны так же, как и при описании синтаксиса, не выделяются никак: в данном случае это слова if, then, else. Обязательная изменяемая часть инструкции, в которую при её использовании записываются необходимые слова, выделяются угловыми скобками (иногда другим шрифтом). В данном случае это <условие>, <инструкции then>, <инструкции else>. Необязательная часть инструкции записывается в квадратных скобках: [else <инструкции else>]. Таким образом, приведённая запись синтаксиса означает следующее: начинается инструкция обязательно со слова if. После if, через пробел, обязательно должно быть записано какое-либо условие, после которого, так же через пробел, обязательно записывается слово then, после которого, опять же через пробел, обязательно записывается «инструкция then». После этого следует необязательный блок, но если он применяется, то должен быть записан следующим образом: после «инструкций then» через пробел должно идти слово else, после которого, через пробел, обязательно должны идти какие-либо инструкции - <инструкции else>.

Трансляция - процесс перевода программы с языка высокого уровня на язык процессора.

Компиляция – трансляция, результатом которой является исполняемый файл программы.

Интерпретация – трансляция с одновременным выполнением. В таком случае, прежде чем программа будет выполнена, необходимо, чтобы был запущен интерпретатор языка высокого уровня (VBA – интерпретатор, VB .NET – компилятор). Исполняемый файл программы в процессе интерпретации, как правило, не создаётся.

Интегрированная среда разработки программ – приложение, объединяющее совокупность программных средств, обеспечивающих пользователю возможности создания, отладки, трансляции и выполнения разрабатываемых программ. Для VBA интегрированной средой разработки является приложение, называемое «Редактор VBA».

Проект – Объект, представляющий собой документ или шаблон Word. Может включать в себя текст документа, модули, формы и ссылки.

Модуль – Часть документа или шаблона, в которой сохраняются VBA макросы.

VBA Макрос – программа на языке Visual Basic, позволяющая автоматизировать работу в приложениях MS Office и расширить возможности MS Office путем реализации обработки данных документа по определённому алгоритму.

Объекты

VBA относится к языкам объектно-ориентированного программирования (ООП).

ООП - методика анализа, проектирования и написания приложений с помощью объектов.

Объект - объединение данных и кода, предназначенного для их обработки в нечто целое.

Семейство (collection) представляет собой объект, содержащий несколько других объектов, как правило, одного и того же типа. Например, объект workbooks (рабочие книги) содержит все открытые объекты Workbook (рабочая книга). Каждый элемент семейства нумеруется и может быть идентифицирован либо по номеру, либо по имени. Например, worksheets (1) обозначает первый рабочий лист активной книги, а worksheets ("Лист1") — рабочий лист с именем лист1.

Наследование - в объектно-ориентированном программировании - свойство объекта, заключающееся в том, что характеристики одного объекта (объекта-предка) могут передаваться другому объекту (объекту-потомку) без их повторного описания. Наследование упрощает описание объектов.

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

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

Иерархия объектов.Объектная библиотека VBA располагает более 100 различных объектов, находящихся на различных уровнях иерархии. Иерархия определяет связь между объектами и показывает пути доступа к ним. Информацию об иерархии объектов приложения можно почерпнуть из справки (Рис. 1). Например, в MS Word: справка->справка по программированию->MS Word VB Reference->MS Word Object Model. Аналогично в структуре справки MS Excel и других приложений MS Office. Помимо этого в справке приложения можно найти примеры использования каждого объекта и приёмы программирования для решения различных задач.

Объектная модель приложения MS Office представляет собой то, что отражено в названии: в рамках этой модели в форме иерархической зависимости отражены все объекты, составляющее запущенное приложение, такие как само приложение - объект Application, его свойства, надстройки (AddIns), документы (Documents), параметры документов (Name - имя, Password - пароль, PageSetup – свойства страниц, и т.п.), объекты документов (Paragraphs - параграфы, Lists - списки, Shapes - рисунки, и т.п.), параметры этих объектов и т.д. до последней буковки.

Доступ к нужному объекту, представленному в модели, осуществляется по ссылке, в которой используются имена объектов. Полная ссылка на объект состоит из ряда имен вложенных последовательно друг в друга объектов. Разделителями имен объектов в этом ряду являются точки, ряд начинается с объекта Application и заканчивается именем самого объекта. Например, полная ссылка на ячейку «A1» рабочего листа «лист1» рабочей книги с именем «Архив» имеет вид:       

Application.Workbooks ("Архив").Worksheets ("Лист1").Range ("Al").

Приводить каждый раз полную ссылку на объект не обязательно. Обычно достаточно ограничиться только неявной ссылкой на объект. В неявной ссылке, в отличие от полной, объекты, которые активны в данный момент, как правило, можно опускать. В рассмотренном случае, если ссылка на ячейку A1 дана в программе, выполняемой в среде Excel, то ссылка на объект Application может быть опущена, т. е. достаточно привести относительную ссылку:    

Workbooks ("Архив").Worksheets ("Лист1").Range ("A1")

Если рабочая книга Архив является активной, то ссылку можно записать еще короче:        

Worksheets ("Лист1").Range ("A1")  

Если и рабочий лист «Лист1» активен, то в относительной ссылке вполне достаточно ограничиться упоминанием только диапазона A1:

Range ("A1")    

 

Методы представляют собой части объекта, выполняющие действия над данными объекта. Синтаксис применения метода:

Объект.Метод

В данном примере при помощи метода Quit (закрыть) закрывается приложение (объект Application). Application.Quit

Метод можно применять ко всем объектам семейства. В данном примере к семейству chartobjects (диаграммы) рабочего листа «Лист1» применен метод Delete (удалить), который приводит к удалению всех диаграмм с рабочего листа «Лист1»: Worksheets ("Лист1").Chartobjects.Delete

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

Объект.Свойство = ЗначениеСвойства      

В следующем примере изменяется заголовок окна Excel посредством задания свойства Caption объекту Application:      

Application.Caption = "Пример"        

Свойство можно изменять сразу у всех объектов семейства. В приведенном ниже примере с помощью установки свойству visible (видимость) значения False (ложь) все рабочие листы активной книги (семейство объектов worksheets) скрываются:        

Worksheets.Visible = False

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

События

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

Суть программирования на VBA как раз и заключается в этих двух понятиях: событие и отклик на него. Если пользователь производит какое-то воздействие на систему, скажем, нажимает кнопку, тогда в качестве отклика выполняется код созданной пользователем процедуры. Если такой отклик не создан, т. е. не написана соответствующая процедура, то система никак не реагирует на данное событие, и оно остается безответным. Таким образом, действия, происходящие в системе, являются событиями, а отклики на них — процедурами. Этот специальный вид процедур, генерирующих отклик на события, называется процедурами обработки событий. В целом программирование на VBA состоит в создании кода программ, которые генерируют прямо или косвенно отклики на события.

Порядок выполнения работы

1. Запустите Microsoft Word.

2. Создайте новый документ и дайте ему имя, выбрав пункт Файл -> Сохранить как (Рис. 2).

3. Для запуска встроенного редактора VBA выберите пункты Сервис -> Макрос -> Редактор Visual Basic (Рис. 3),  или нажмите Alt-F11.

4. В редакторе Visual Basic при запуске отображается окно Менеджера проектов и окно Свойств объектов (Рис. 4).

4.1. Окно менеджера проектов содержит дерево открытых в данный момент шаблонов и документов (Рис. 5), и как минимум, там должны присутствовать:

4.1.1. шаблон normal.dot, открываемый при запуске word по умолчанию

4.1.2. открытые в данный момент документы

4.2. Окно Свойств объектов (Рис. 6) содержит свойства объекта текущего выбора из окна менеджера проектов.

5. Для того чтобы написать программу на Visual Basic, необходимо вставить модуль в документ.

5.1. Выберите проект, содер жащий созданный вами документ (имя документа содержится в скобках) (Рис. 7) .

5.2. Выберите команды Insert -> Module в меню редактора Visual Basic (Рис. 8), или, нажав на соответствующем проекте в менеджере проектов правой кнопкой мыши, выберете соответствующие команды в контекстном меню (Рис. 9). Редактор добавит новый модуль в проект и откроет окно Редактора кода (Рис. 10) созданного модуля, в котором можно написать программу.

5.3. Переименуйте новый модуль, дав ему имя HelloWorld. Для этого:

5.3.1. В менеджере проектов выберите новый модуль (Рис. 11).

5.3.2. В окне Свойств измените свойство Name (Рис. 12).

6. Напишите первую программу «Hello World»:

6.1. Перейдите в окно кода

6.2. Введите следующие строки:   

Sub HelloWorld ()
MsgBox "Hello, World!"   
End Sub 

На экране это будет выглядеть примерно так: (Рис. 13):

6.2.1. Строка Sub HelloWorld() означает начало процедуры с именем HelloWorld, которая не использует внешних параметров.

6.2.2.
Строка End Sub означает окончание процедуры и появляется автоматически.

6.2.3. Команды, располагаемые между этими строками, составляют тело процедуры, и выполняются последовательно.

6.2.4. В данном случае, тело процедуры состоит из одной команды. Команда MsgBox "Hello, World!" приводит к выводу на экран окна с надписью Hello, World!.

6.2.5. После набора MsgBox редактор VBA выведет подсказку с перечислением параметров, которые можно передавать в процедуру MsgBox (Рис. 14).

7. Запустите программу на выполнение, выбрав пункт меню Run -> Run Sub/UserForm (Рис. 15) , или нажав кнопку  на панели инструментов.

7.1. По команде MsgBox "Hello, World!" в программе будет выведено окно, содержащее выводимый текст (Рис. 16).

7.2. Перейдите в созданный документ.

7.3. Выберите пункт меню Сервис -> Макрос -> Макросы (Рис. 17)

7.4.
В списке макросов выберите HelloWorld (Рис. 18) и нажмите на кнопку выполнить.

7.5. Выполнится написанная программа (Рис. 16).

8. Измените вторую строку на
MsgBox "Hello, World!",vbYesNo,"Окно приветствия"
Выполните программу и посмотрите, что изменилось в результате.

9. Сохраните документ. Вместе с ним сохранится всё, что входит в проект. Чтобы сохранить модуль отдельно от документа воспользуйтесь пунктом меню File -> Export File…

10. Напишите программу с использованием объектной модели MS Word.

10.1. Создайте в имеющемся модуле процедуру без параметров.

10.2.
Введите в тело процедуры строку:
ThisDocument.PageSetup.LeftMargin = 300 
(Можно воспользоваться появляющимся списком (Рис. 19))

10.2.1. ThisDocument означает обращение к документу проекта (вы можете это видеть в окне менеджера проектов (Рис. 20)).

10.2.2. PageSetup означает обращение к параметрам страницы текущего документа.

10.2.3. LeftMargin – параметр «отступ слева».

10.2.4. Параметру присваивается значение 300 (пунктов).

10.3. На следующей строке наберите команду
ThisDocument.Activate
, которая сделает документ проекта активным.

10.4. Наберите команду
Selection.TypeText "Hello, world"
Selection – обращение к выделенному фрагменту документа или к позиции курсора. TypeText – процедура вывода строки текста. Строка текста записывается в качестве параметра.

11. Запустите программу и убедитесь, что с документом проекта была выполнена запрограммированная вами последовательность действий.

Содержание отчёта

1. Титульный лист

2. Цель работы

3. Результаты выполненных действий

4. Ответы на контрольные вопросы

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

1. Определите понятие «Язык программирования VBA».

2. Охарактеризуйте язык программирования VBA.

3. Какие возможности предоставляет интегрированная среда разработки программ на VBA?

4. Как описывается синтаксис инструкций?

5. Как программа на VBA может получить доступ к данным, открытым в приложении MS Office?

6. Что общего и чем различаются свойства и методы объекта?

7. Какое событие может привести к запуску программы на VBA?

8. Что такое «проект» в MS Office?

9. Зачем нужны окно свойств и окно менеджера проектов в редакторе VBA?

10. В каком месте вводится программа на VBA?

11. Как сохранить программу, написанную на VBA?

12. Что же произошло в пункте 6 при выполнении работы?

13. Каков должен быть результат выполнения запрограммированной в пункте 8?

14. Создайте схемы алгоритмов для программ, написанных в данной лабораторной работе.


Лабораторная работа 2
Реализация линейных алгоритмов в VBA

Цель работы.

Научиться создавать простейшие программы на VBA.

Общие сведения

Переменные в VBA

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

Тип переменных определяется типом данных, которые они представляют.

Типы данных в VBA

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

Типы данных VBA отображены в таблице (Таблица 1).

Описание переменных

В VBA переменные можно не описывать. При выполнении программы переменная создаётся в момент появления в тексте и принимает тип, соответствующий значению, которое этой переменной присваивается в момент первого появления (в VBA – тип Variant)

Описание типа каждой переменной делает программу надежнее за счёт снижения уровня беспорядка и ускоряет ее работу, так как VBA не требуется тратить время на распознавание типа неописанной переменной при каждом обращении к ней. В лабораторных работах все используемые переменные обязательно должны быть описаны. Для предотвращения использования неописанных переменных следует в начало модуля поместить инструкцию Option Explicit.

Таблица 1. Типы данных в VBA

Название Размер Диапазон значений
Byte 1 Целое число от 0 до 255
Integer 2 Целое число от -32768 до 32767
Long 4 Целое число от -2147483648 до 2147483647
Decimal 14 Масштабируемое целое число +/-79228162514264337593543950335 с 28 знаками справа от запятой; минимальное ненулевое значение имеет вид +/-0,0000000000000000000000000001
single 4 Число с плавающей запятой обычной точности: от -3.402823Е38 до -1,401298Е-45 от 1.401298Е-45 до 3,402823Е38
Double 8 Число с плавающей запятой двойной точности от -1.79769313486232Е308 до -4.94065645841247Е-324; от 4.94065645841247Е-324 до 1.79769313486232Е308.
Currency 8 Деньги от -922337203685477,5808 до 922337203685477,5807
Boolean 2 Логический: True или False
Date 8 Даты и время от 1.01.100г. до 31.12.9999 г.
Object 4 Любой указатель объекта
string 10 + длина строки Строка переменной длины от 0 до приблизительно 2 миллиардов
string Длина строки Строка постоянной длины от 1 до 65400
Variant 16 Числовые подтипы: любое числовое значение до границ диапазона типа Double
Variant 22 + длина строки Строковые подтипы - как для строки (string) переменной длины
Тип, определяемый пользователем. Объем определяется элементами Определяется с помощью ключевого слова Туре. Диапазон каждого элемента определяется его типом данных

Синтаксис:


Dim [WithEvents] ИмяПеременной [([Индексы])] [As [New] Тип] [, [WithEvents] ИмяПеременной [([Индексы])] [As [New] Тип]]

 

Аргументы:

WithEvents - Ключевое слово, указывающее, что аргумент ИмяПеременной является именем объектной переменной, которая используется при отклике на события, генерируемые объектом ActiveX (то есть объектом, который может быть открыт для других приложений и средств программирования)

ИмяПеременной - Имя переменной, удовлетворяющее стандартным правилам именования переменных

Индексы - Размерности переменной массива; допускается описание до 60 размерностей. Для задания аргумента индексы используется следующий синтаксис: 

[Нижний То] Верхний [, [Нижний То] Верхний] ...   

Если нижний индекс не задан явно, нижняя граница массива определяется инструкцией Option Base <0|1> и может быть равна 0 или 1. Если отсутствует инструкция option Base, нижняя граница массива равняется нулю

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

Тип - Тип данных переменной. Для каждой описываемой переменной следует использовать отдельное предложение As Тип  

 

Переменные, описанные с помощью ключевого слова Dim на уровне модуля, доступны для всех процедур в данном модуле. Переменные, описанные на уровне процедуры, доступны только в данной процедуре.

Инструкция Dim предназначена для описания типа данных переменной на уровне модуля или процедуры. Например, следующая инструкция описывает переменную с типом integer.

Dim N As Integer       

 

Инструкция Dim предназначена также для описания объектного типа переменных. Далее приводится описание переменной для нового экземпляра рабочего листа.       

Dim X As New Worksheet 

 

Если при описании объектной переменной не используется ключевое слово New, то для использования объекта, на который ссылается переменная, существующий объект должен быть присвоен переменной с помощью инструкции Set.

Инструкция DefТип

Инструкция DefTиn (вместо тип в имени инструкции фигурируют буквы, обозначающие конкретный тип данных) используется на уровне модуля для задания типа данных по умолчанию для переменных, аргументов, передаваемых в процедуры, и значений, возвращаемых процедурами Function и Property Get, имена которых начинаются с соответствующих символов (Таблица 2).

Таблица 2. Задание типов данных по умолчанию

Синтаксис Описание
DefBool ДиапазонБукв [, ДиапазонБукв] ... Тип данных Boolean
DefByte ДиапазонБукв [, ДиапазонБукв] ... Тип данных Byte
Deflnt ДиапазонБукв [, ДиапазонБукв] ... Тип данных Integer
DefLng ДиапазонБукв [,ДиапазонБукв] ... Тип данных Long
DefCur ДиапазонБукв [, ДиапазонБукв] ... Тип данных Currency
DefSng ДиапазонБукв [, ДиапазонБукв] ... Тип данных Single
DefDbl ДиапазонБукв [, ДиапазонБукв] ... Тип данных Double
DefDate ДиапазонБукв [, ДиапазонБукв] ... Тип данных Date
DefStr ДиапазонБукв [, ДиапазонБукв] ... Тип данных String
DefObj ДиапазонБукв [, ДиапазонБукв] ... Тип данных Object
DefVar ДиапазонБукв [, ДиапазонБукв] ... Тип данных Variant

Аргумент ДиапазонБукв имеет следующий синтаксис:

Буква1[-Буква2]

Аргументы Буква1 и Буква2 указывают границы диапазона имен, для которых задается тип данных по умолчанию.

В следующем примере инструкция устанавливает, что все переменные с именами, начинающимися с букв из диапазона от А до Q, имеют строковый тип:

DefStr A-Q

Инструкция Def Тип действует только на модуль, в котором она используется.

При указании диапазона букв обычно определяется тип данных по умолчанию для переменных, которые начинаются с первых 128 символов набора. Однако при указании диапазона A—Z задается тип данных по умолчанию для всех переменных, включая те, что начинаются с международных символов из расширенной части набора (128-255).

Еще одним способом задания типа переменной по умолчанию является включение в конец имени специального символа, устанавливающего тип переменной (Таблица 3).

Таблица 3. Символы для задания типов по умолчанию

Символ Тип
* Integer
& Long
| Single
# Double
@ Currency
$ String

Константы

Константа - именованная часть памяти, хранящая определённое значение, которое в процессе работы программы не может быть изменено.

Синтаксис:


[Public|Private] Const ИмяКонстанты [As Тип] = Значение

Аргументы

Public - Ключевое слово, используемое на уровне модуля для описания констант, доступных всем процедурам во всех модулях. Не допускается в процедурах.

Private - ключевое слово, используемое на уровне модуля для описания констант, доступных только внутри модуля, в котором выполняется описание. Не допускается в процедурах.

Тип данных, определенный пользователем

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

Синтаксис:


[Private | Public] Type ИмяПеременной
ИмяЭлемента [([Индексы])] As тип
[ИмяЭлемента [([Индексы])] As тип]  
End Type 

Аргументы:

Public - Используется пользователем для описания определяемых типов, которые доступны для всех процедур во всех модулях всех проектов

Private - Используется для описания определяемых пользователем типов, которые доступны только в модуле, в котором выполняется описание

Тип - Тип данных элемента; поддерживаются типы: Byte, Boolean, Integer, Long, Currency, Single, Double, Date, String (для строк переменной длины), String* длина (для строк фиксированной длинны), Object, variant и другой, определяемый пользователем тип или объектный тип

В данном примере инструкция туре используется для определения типа данных (только на уровне модуля). При появлении в модуле класса инструкции туре должно предшествовать ключевое слово Private.

' Тип, определенный пользователем

Туре Student 'Описание типа «Студент»

Фамилия As String * 20

Имя As String * 20

Отчество As String * 20

НомерЗачетки As Integer

Группа As String * 10

Курс As Long

ДатаРождения As Date

End Type

‘ Описание переменной типа «Студент»

Dim s1 As Student

‘Обращение к элементам переменной типа «Студент»

s1.Фамилия = Иванов

s1.НомерЗачетки = 12003

s1.Группа = "Менеджмент"

Допустимые имена

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

1. Длина имени не должна превышать 255 символов.

2. Имя не может содержать пробелов и следующих символов: % .   ,    & !   #  @ $.

3. Имя может содержать любую комбинацию букв, цифр и символов, начинающуюся с буквы.

4. Имена должны быть уникальны внутри области, в которой они определены.

5. Не следует использовать имена, совпадающие с ключевыми словами VBA и именами встроенных функций и процедур.

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

Инструкции VBA

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

1. Инструкции описания

2. Инструкции присваивания

3. Исполняемые инструкции

Присвоение значений

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

Оператор присвоения присваивает значение выражения переменной, константе или свойству объекта.

Синтаксис:


[Let] <Объект, которому присваивается значение> = <Выражение>


Инструкция Let необязательна и, чаще всего, опускается. Оператор присвоения предписывает выполнить выражение, заданное в его правой части, и присвоить результат переменной, имя которой указано в левой части. В результате, например, действия следующей пары операторов     

х = 2
х = х + 2  

переменной «х» будет присвоено 4.

Для присвоения переменной ссылки на объект применяется инструкция Set.

Синтаксис:

Set ОбъектнаяПеременная = [New]<ОбъектноеВыражение | Nothing>


Аргументы:

New используется при создании нового экземпляра класса;

Nothing позволяет освободить все системные ресурсы и ресурсы памяти, выделенные для объекта, на который имелась ссылка (вольно говоря, она удаляет объект из памяти).

В следующем примере инструкция Set присваивает переменной «Область» диапазон А1:B3:       

Set Область = Range ("A1:B3")

 

Совместимость типов

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

a = b

приведёт к тому, что в переменной «a» будет сохранено округлённое до целого значение переменной b, что может привести к ошибке при дальнейшем использовании этого значения. Кроме того, в связи с тем, что в переменной типа Single может быть сохранена большая величина, чем диапазон допустимых значений типа Integer, выполнение этой инструкции может вызвать ошибку переполнения в процессе выполнения программы.

С другой стороны обратное отображение может быть выполнено вполне корректно, и переменной типа Single всегда может быть присвоено значение переменной типа Integer. 

b = a         

всегда будет корректно выполняться.

Исходя из этих соображений, разные типы могут быть совместимы, если посмотреть на размер, занимаемый ими в памяти, диапазон значений и воспользоваться здравым смыслом.

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

Перенос строки

Расположение символов (пробел) + (Знак подчеркивания) в конце строки обеспечивает то, что последующая строка является продолжением предыдущей. При этом надо помнить, что:

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

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

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

Например:        

Dim a As Integer, b As Byte _
S As String        

 

Комментарии

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

1. Делают программу легко читаемой, поясняя смысл программных кодов и алгоритма.

2. Временно отключают фрагменты программы при отладке.

В языке VBA существуют два способа ввода комментариев:

1. Применение апострофа '. Его можно ставить в любом месте строки. При этом все символы, начиная от апострофа до конца строки, будут восприниматься компилятором как комментарий.

2. Применение зарезервированного слова Rem.

Ниже приведен пример использования комментариев в тексте программы:        

Dim a As Integer    ' а — целая переменная
Dim b As String    
Rem b — строковая переменная        

 


Дата добавления: 2018-05-12; просмотров: 777; Мы поможем в написании вашей работы!

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






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