
Лаб раб 7
.pdfМинистерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования žКузбасский государственный технический университет имени Т.Ф. Горбачева¤
В. В. Крюкова
ОСНОВЫ ПРОГРАММИРОВАНИЯ НА VBA. ОБРАБОТКА СТРОК
Методические указания к лабораторной работе
Рекомендовано учебно-методической комиссией направления 080100.62 žЭкономика¤ в качестве электронного издания для использования в учебном процессе
Кемерово 2013
1
Рецензент Сарапулова Татьяна Викторовна, старший преподаватель кафед-
ры прикладных информационных технологий.
Крюкова Валентина Валентиновна. Основы программирования на VBA. Обработка строк: метод. указания к лабораторной работе по дисциплине žЭкономическая информатика¤ [электронный ресурс]: для студентов направления 080100.62 žЭкономика¤, профили: žБухгалтерский учет, анализ и аудит¤, žФинансы и кредит¤, žЭкономика предприятий и организаций¤ / В.В. Крюкова. – Электрон. дан. – Кемерово: КузГТУ, 2012. – Систем. требования: ОЗУ 64 Мб; WindowsXP/Vista/7. – Загл. с экрана.
Методические указания предназначены для изучения основных элементов технологии обработки строковых данных в среде Visual Basic for Applications приложения Microsoft Excel. В состав указаний входят теоретический материал, описание технологии решения задачи, контрольные вопросы для самопроверки и задания для выполнения лабораторной работы.
КузГТУ
Крюкова В.В.
2
Содержание
Введение……………………………………………………………...3
1.Основы языка Visual Basic for Applications ..……………… ..3
1.1.Арифметические, строковые и логические операции …3
1.2.Переменные и константы ...………......…………………..5
1.3.Процедуры и функции пользователя ……………………9
1.4.Ввод и вывод данных …………………………………….11
1.5.Основные управляющие инструкции VBA …………….13
2.Обработка строковых данных ………………………………..17
2.1.Описание строк …………………………………………..17
2.2.Строковые функции ……………………………………...20
2.3.Примеры решения задач …………………………………23
3.Задание для выполнения лабораторной работы …………….26
4.Требования к содержанию и оформлению отчета …………..27
5.Контрольные вопросы ………………………………………...27 Список рекомендуемой литературы ……………………………….28
Приложения А – В. Примеры оформления отчета ……………....29
3
Введение
Лабораторная работа выполняется студентами второго курса (4-й семестр) в рамках изучения дисциплины "Экономическая информатика". Согласно рабочей программе на лабораторные занятия отводится 34 часа, из них на выполнение данной лабораторной работы – 2 часа.
Рассматриваются основные инструкции языка VBA, строковые встроенные функции и технология программирования на примере решения задачи обработки строковых данных.
Согласно ГОС 3 ВПО реализуются следующие компетенции: ОК-13 – овладение основными методами, способами и средст-
вами получения, хранения, переработки информации, приобретение навыков работы с компьютером как средством управления информацией;
ПК-5 – способность выбрать инструментальные средства для обработки экономических данных в соответствии с поставленной задачей, проанализировать результаты расчетов и обосновать полученные выводы.
Цель работы: изучить встроенные строковые функции и основные элементы технологии обработки строковых данных в среде Visual Basic for Applications приложения Microsoft Excel.
1.Основы языка Visual Basic for Applications
1.1.Арифметические, строковые и логические операции
Visual Basic for Applications (VBA) – это Visual Basic для приложений MS Office. VBA включает ядро, общее для всех приложений, и объектную модель конкретного приложения. Ядро языка VBA – это собственно сам язык, обеспечивающий выполнение Basic – инструкций и поддерживающий типы и структуры данных. Ядро VBA нельзя расширить и никакой гибкости в обращении с собой оно не допускает. Гибкость и расширяемость обеспечивается в VBA благодаря объектному подходу. Каждое приложение, созданное в среде MS Office с помощью VBA, удовлетворяет требованиям объектной модели. При этом предполагается, что всю совокупность элементов, из которых состоит приложение, можно представить в виде некоторой иерархической структуры – модели объектов. Преимущество, которое дает объектная модель, состоит в том, что разные приложения могут по-
4 лучить доступ к объектам друг друга. Каждый объект обладает набо-
ром свойств, значения которых могут быть изменены, и набором методов, которые могут быть вызваны и выполнены. Кроме того, объекты могут реагировать на определенные события. Рассмотрим VBA для приложения MS Excel.
Алфавит языка - набор допустимых символов: прописные и строчные буквы латинского и русского алфавитов, арабские цифры от 0 до 9, из этих символов конструируются различные имена типов данных, констант, процедур и функций, операторов, свойств и методов объектов. Прописные и строчные буквы не различаются. Язык содержит набор ключевых слов, из которых конструируются операторы и другие конструкции языка. Этот набор является зарезервированным и не может использоваться для других целей. Для построения арифметических и логических выражений используются символы (операторы), представленные в табл. 1, табл. 2.
Таблица 1 – Арифметические, строковые операции и операции сравнения
Операция |
Описание |
+ |
Сумма |
– |
Разность |
* |
Умножение |
/ |
Деление |
\ |
Деление нацело (возвращает целую часть) |
^ |
Возведение в степень |
() |
Скобки, используются для составления сложных выражений |
& или + |
Операция žконкатенация¤ (сцепление строк) |
‘ |
комментарии |
_ |
Подчеркивание, используется для указания продолжения строки |
|
оператора при переносе его части на другую строку |
>, <, < =, > =, < > |
Операторы сравнения |
|
Символ žпробел¤ используется для разделения слов в операторе |
mod |
Деление по модулю (возвращает остаток от деления) |
Is |
Идентичность объектов или соответствие типу |
Like |
Соответствие типу |
Таблица 2 – Логические операции
Операция |
Описание |
Not |
Логическое отрицание |
And |
Логическое žИ¤ (умножение) |
Or |
Логическое žИЛИ¤ (сложение) |
Xor |
Исключающее žИЛИ¤ |
Imp |
Импликация |
Eqv |
Эквивалентность |
5 В табл. 3 приведена таблица истинности логических операций.
Таблица 3 - Таблица истинности And, Or, Xor (результат)
Операнд 1 |
Операнд 2 |
And |
Or |
Xor |
true |
true |
true |
true |
false |
true |
false |
false |
true |
true |
false |
true |
false |
true |
true |
false |
false |
false |
false |
false |
1.2. Переменные и константы
Для хранения данных в программе и памяти компьютера используются переменные и константы. Переменная – именованная область памяти, отведенная для временного хранения данных, которые могут изменяться при выполнении программы.
Константа – именованная область памяти, отведенная для хранения постоянного значения в программе. Переменная и константа – имеют имя и значение.
Имена должны удовлетворять определенным требованиям. Первый символ в имени всегда буква. В имени нельзя использо-
вать управляющие символы: ž!¤, ž@¤ , ž&¤ , ž$¤ , ž_¤.
В именах не допускаются пробелы, вместо пробела можно использовать знак žподчеркивание¤. Имена должны быть содержательными. Длина имени не может быть более 255 символов. Желательно использовать короткие имена. В качестве имен нельзя использовать ключевые слова языка. Имя нельзя повторять в пределах области его видимости (действия). Имена необходимо объявлять. При объявлении имени следует указывать тип данных. Типы данных, используемые в VBA, приведены в табл. 4.
Таблица 4 – Типы данных
Тип |
Объем |
Описание |
|
памяти, |
|
|
байт |
|
Byte |
1 |
Байтовый. Хранит значения целых чисел в диапазоне от 0 |
|
|
до 255 |
Integer |
2 |
Целый. Диапазон значений: от –32768 до +32767 |
Long |
4 |
Длинное целое. Диапазон значений: от –2147483648 до + |
|
|
2147483647 |
Single |
4 |
Вещественный с одинарной точностью, позволяет хранить |
|
|
значение с точностью до 6 знаков после запятой. Диапа- |
|
|
6 |
|
|
зон значений: от 1,4Е–45 до 3,4Е+38 |
Double |
8 |
Вещественный с двойной точностью, позволяет хранить |
|
|
значение с точностью до 14 знаков после запятой. Диапа- |
|
|
зон значений: от 1,79Е+308 до 4,94Е–324 |
Currency |
8 |
Денежный. Представляется, как масштабируемое целое с |
|
|
фиксированной десятичной точностью с пятнадцатью раз- |
|
|
рядами в целой части и четырьмя разрядами в дробной |
|
|
части |
Decimal |
12 |
Десятичный. Явно не описывается, его используют с по- |
|
|
мощью функции Cdec, которая преобразует данные типа |
|
|
Variant в десятичный тип. Обеспечивает точность до 28 |
|
|
знаков после запятой |
String |
1/символ |
Строки фиксированной длины (до 65 тыс. символов) и |
|
|
строки переменной длины (до 2 млрд. символов) |
Boolean |
2 |
Логический тип (булевский) - хранит два значения: исти- |
|
|
на/ ложь |
Date |
8 |
Хранит даты, начиная с 01.01.100 до 31.12.9999 г.г. Дата |
|
|
хранится как целое число. Переменная типа Date может |
|
|
хранить как непосредственно дату, так и время, оно хра- |
|
|
нится в качестве дробной части числа |
Variant |
16 |
Общий (универсальный) тип, который позволяет хранить |
|
|
все числовые данные, строки, даты, логические данные |
|
|
(кроме данных пользовательского типа) |
Object |
4 |
Ссылка на объект |
Тип данных определяет диапазон возможных значений, объем памяти для хранения и точность представления данных.
Тип данных Variant применяется по умолчанию. Если переменная не описана в программе, то считается, что она имеет тип Variant. Начальное значение переменной типа Variant зависит от операции, в которой она участвует, оператор присваивания указывает значение, которое и определяет конкретный подтип типа Variant. Некоторые функции позволяют определить подтип переменной типа Variant. В библиотеке VBA имеются функции преобразования данных других типов (табл. 5).
Переменная используется для временного хранения данных в программах (процедурах). Переменные могут быть описаны (объявлены) явно и неявно. Неявное описание часто приводит к ошибкам, поэтому рекомендуется описывать в процедуре явно типы данных.
Для описания переменных используется оператор DIM, общий вид которого:
DIM < имя переменной> [(индексы)] [AS<тип>]. Квадратные скобки означают, что их содержимое можно опустить. Если записано: DIM < имя переменной>, то предполагается тип Variant. Можно явно указать тип Variant:
7
DIM < имя переменной> AS Variant.
Таблица 5 – Функции для работы с типами данных
Функция |
Описание |
|
IS Numeric (аргумент ) |
Возвращает true (истина), если аргумент число |
|
ISDate (аргумент) |
Возвращает true (истина), если аргумент можно преобра- |
|
|
|
зовать в значение типа Date |
Val (аргумент) |
Возвращает число, где аргумент имеет тип Variant или |
|
|
|
String |
CBool (аргумент) |
Возвращаем булевский эквивалент числа |
|
CByte (аргумент) |
Возвращает число байтового типа |
|
CDate (аргумент) |
Возвращает дату |
|
СInt |
(аргумент) |
Возвращает целое число типа Integer |
CLng |
(аргумент) |
Возвращает целое число типа Long |
СSng (аргумент) |
Возвращает вещественное с ординарной точностью число |
|
СStr (аргумент) |
Возвращает строку |
Как правило, описание имен переменных, констант приводится в начале процедуры сразу после заголовка процедуры или перед ним. В синтаксической записи общего вида оператора Dim присутствует элемент [(индексы)], речь идет об описании переменной с индексом, т.е. структуры данных – массива. В общем описании типа данных могут использоваться ключевые слова: Private, Public, Static:
Dim | Private | Public | Static <переменная> [AS <тип>] [<переменная> AS <тип>].
При описании переменных определяется не только ее тип, но и область видимости (действия). Область видимости переменной или константы определяется двумя обстоятельствами: где она объявлена и какое дополнительное ключевое слово при этом использовано.
Различают область видимости на уровне процедуры, на уровне модуля и на уровне проекта (рис. 1). Все процедуры хранятся в модулях. Проект – это файл MS Excel (рабочая книга), в которой хранятся все модули.
Область действия переменных и констант определяется с помощью ключевых слов: Private (личные переменные), Public (глобальные переменные), Static (статические переменные). Переменные и константы, объявленные без ключевых слов, являются локальными, то есть объявлены как Private и сохраняют свое значение в программе, в которой описаны. Если переменная используется во всех процедурах одного модуля, нужно ее описать в начале модуля перед первым Sub с ключевым словом Dim или Private. Переменная, описанная

8
внутри процедуры с ключевым словом Dim, называется личной процедурой и является переменной уровня процедуры (рис. 1).
Уровень проекта. |
|
|
|
|
|
|
Public - доступен во всех |
|
Public/Private |
|
|
||
модулях проекта |
|
|
|
|||
|
|
Модуль |
|
Уровень модуля. |
||
|
|
|
|
|
||
|
|
|
|
Public … |
|
Private - доступен для |
|
|
|
|
Private … |
|
всех процедур |
|
|
|
|
Dim … |
|
модуля |
Уровень процедуры |
|
|
|
|||
|
Sub <имя> |
|
|
|||
|
|
|
|
Dim ... |
|
|
|
|
|
|
Static … |
|
|
Замечание. |
Переменные |
|
……. |
|
|
|
могут быть |
описаны до |
|
end Sub |
|
|
|
Sub или внутри |
|
|
|
|
||
процедуры |
|
|
|
|
|
|
Рисунок 1 – Области видимости переменных и констант
Личная переменная сохраняет свое значение только при выполнении процедуры, в которой она описана; при выходе из нее значение теряется. Иногда нужно сохранять это значение между обращениями к процедуре. С этой целью личную переменную описывают с ключевым словом Static внутри процедуры.
Общие (глобальные) переменные доступны во всех процедурах всех модулей одного проекта, если они описаны на уровне модуля с ключевым словом Public.
Константы определяются в процедуре похожим образом с переменными. Попытка изменить значение константы приведет к ошибке во время выполнения процедуры.
Общий вид определения константы:
[Public/Private] константа <имя> [AS <тип>=<выражение>]. Имени константы сразу приписывается (присваивается) конкретное значение выражения. Ключевые слова Public/Private имеют
тот же смысл, что и для переменных.
В модуле можно указать первой инструкцию: Option Explicit, что означает требование обязательного описания переменных. Код VBA хранится в проектах – рабочих книгах. Проекты содержат модули, а
9 модуль включает процедуры и функции пользователя (программы и подпрограммы).
1.3. Процедуры и функции пользователя
Процедура (программа) – это поименованный набор описаний и инструкций на языке VBA. Инструкция – единица кода, соответствует операции (действию), описанию или области определения. Различают
подпрограммы - процедуры, подпрограммы - функции и подпрограммы - свойства. Рассмотрим первые два типа подпрограмм. Подпрограмма – законченный набор инструкций, который может быть использован другими подпрограммами неоднократно. Как правило, подпрограмма не может выполняться самостоятельно. Только при вызове ее из другой процедуры (программы/подпрограммы). Программирование любой задачи включает блок инструкций, который выполняется самостоятельно. Его и называют программой (основной программой). В ней, как правило, содержатся вызовы других подпрограмм (процедур). Будем говорить процедура, имея в виду основную программу или подпрограмму.
Структура процедуры имеет вид:
Sub <имя> ([аргументы]) <команды> (инструкции)
end Sub.
Необязательный параметр [аргументы] позволяет передать в процедуру и из нее требуемые значения. В этом случае имеется в виду процедура - подпрограмма. Передача аргументов осуществляется по ссылке или по значению. Аргументы, передаваемые по ссылке, помечаются словом ByRef, а по значению - ByVal.
Sub <имя> (Byref A as String; Byval B as integer) <инструкции>
end Sub.
Если ключевые слова ByRef и ByVal отсутствуют, то по умолчанию принята передача аргументов по ссылке. Это значит, что если процедура в процессе своей работы изменит значение одного из своих аргументов, то и исходные данные, переданные в качестве этого аргумента, изменяются. Как правило, по ссылке передаются аргументы (переменные), которые возвращают результат в вызываемую процедуру. При передаче аргументов по значению VBA делает копию исходных данных и передает ее для обработки в процедуру.