Введение . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2
1 История языка Visual Basic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 Применение VBA в пакете Microsoft Office . . . . . . . . . . . . . . . . . . . . . . . .7
3 Работа с массивами в VBA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8
4 Задание . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10
5 Решение поставленной задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
6 Разработка рабочего проекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
7 Листинг программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Глоссарий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18
Приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20
Введение
2
область применения программы, постановка задачи, описание алгоритма
программы, организация входных и выходных данных, выбор состава технических и
программных средств.
Разработка рабочего проекта программы. Данная задача предусматривает описание
разработки программы, приведение текста программы, а также ее описание и
тестирование.
Внедрение программы. Задача предусматривает описание этапов выполнения
программы, и их пояснения.
Методологическую основу составляют материалы посвящённые изучению
языка программирования Visual Basik for Applications.
Теоретическая и практическая значимость. Язык Visual Basik for
Applications может быть использован как инструмент для работы с документами
различного типа, так и как инструмент для создания приложений, которые не
зависят от Microsoft Ofiice.
Теоретическую основу составили методологические и практические
исследования в этой области. Специальная литература, учебники и другие
информационные источники. В частности работы таких авторов как автор1, автор2,
авто3.
3
1 История языка Visual Basic
4
В начале 90-х годов наметилась отчетливая тенденция включение в
приложения, предназначенные для конечного пользователя, средства внутреннего
программирования, которые должны были решать задачи настройки и адаптации
этих пакетов для конкретных условий их применения.
В конце 1993 г. Microsoft объявила о намерении создать на основе VB новую
универсальную систему программирования для прикладных программ, которая
получила название Visual Basic for Applications (VB для приложений). Естественно,
реализацию этого проекта она начала с собственных офисных пакетов.
Первый вариант VBA 1.0 появился в составе MS Office 4.0, но лишь в
программах Excel 4.0 и Project 6.0. В других же приложениях - Word 6.0 и Access 2.0
- были собственные варианты Basic. Более того, VBA 1.0 довольно сильно отличался
(причем имея ряд существенных преимуществ) от используемой тогда
универсальной системы VB 3.0.
Качественный перелом наступил в конце 1996 года с выпуском MS Office 97, в
котором была реализована единая среда программирования VBA 5.0, включенная в
программы Word, Excel и PowerPoint. Более того, VBA 5.0 использовала тот же
самый языковый механизм и среду разработки, что и универсальная система VB 5.0.
В состав выпущенного год назад MS Office 2000 вошла соответственно версия VBA
6.0, которая используется в шести программах — Word, Excel, PowerPoint, Access,
Outlook, Frontpage.
5
2 Применение VBA в пакете Microsoft Office
6
3 Массив
7
При обращении к элементу массива A[i1, i2, i3, … in] адрес соответствующего
элемента вычисляется как B+S*(i1p*m1+i2p*m2+…+i(n-1)p*mn-1+inp), где B —
база (адрес начала блока памяти массива), ikp-значение k-го индекса, приведённое к
целому с нулевым начальным смещением.
Таким образом, адрес элемента с заданным набором индексов вычисляется, так что
время доступа ко всем элементам массива одинаково.
Первый элемент массива, в зависимости от языка программирования, может
иметь различный индекс. Различают три основных разновидности массивов: с
отсчетом от нуля (zero-based), с отсчетом от единицы (one-based), и с отсчетом от
специфического значения заданного программистом (n-based). Отсчет индекса
элемента массивов с нуля более характерен для низкоуровневых ЯП, однако этот
метод был популяризирован в языках более высокого уровня языком
программирования С.
Более сложные типы массивов — динамические и гетерогенные —
реализуются сложнее.
4 Задание
8
Из массива A удалить те элементы, которые встречаются и в массиве A и в
массиве B по крайней мере по 2 раза. Пример, массив A[8]: 3 3 4 5 2 3 5 9, массив
B[7]: 1 2 3 4 5 2 5. По 2 раза в обоих массивах встречается только элемент, равный 5.
Массив A после удаления примет вид: A[6]: 3 3 4 2 3 9.
Для выполнения данного задания весьма удобно использовать программу Excel.
На рабочем листе отображаются массивы, введённый вручную для визуальной
проверки работы программы, так как при генерации значений массивы могут не
удовлетворять условиям, следовательно, визуальная проверка работы программы
будет невозможна.
k=0
d(i) = k
k=0
10
If b(i) = a(x) Then
k=k+1
e(i) = k
11
Разработка программы
Для разработки программы, описанной в главе «Задание» используется среда
визуального программирования Visual Basic for Application. Проект программы
содержит один основной модуль, содержащий код программы; форму-приветствие и
дополнительный модуль, предназначенный для создания панели, на которой
отображаются функциональные кнопки.
Тестирование программы
Производится очищение результатов программы после предыдущего запуска.
Данные из первой и третьей строк считываются в массивы А и В.
Производится проверка, если элемент массива А равен элементу массива В, то
переменная-счётчик увеличивается на единицу. После подсчёта повторений
значение переменной-счётчика записывается в массив d Производится проверка,
если элемент массива В равен элементу массива А, то переменная-счётчик
увеличивается на единицу. После подсчёта повторений значение переменной-
счётчика записывается в массив e. Производится сравнение элементов массивов,
если они равны, и значения элементов массивов d и e с соответствующими
индексами больше двух, то элемент массива а принимает «пустое» значение.
Производится перестановка значений элементов массива А таким образом, что все
пустые значения принимают последние элементы массива. Производится подсчёт
непустых элементов, изменение размера массива с сохранением данных и вывод на
экран.
7 Листинг программы
12
Option Base 1
Sub kurs()
'Присвоение переменным типов данных. Массив а задаётся как динамический.
Dim a(), b(10), d(10), e(10) As Variant
Dim i, k, x, y As Integer
'Изменение размера массива а.
ReDim a(10)
'Стирание результатов предыдущих запусков программы.
Sheets(1).Select
For i = 1 To 10
cells(7, i).value = ""
Next i
'Заполнение массива а значениями ячеек из первой строки.
For i = 1 To 10
a(i) = cells(1, i).value
Next i
'Заполнение массива b значениями ячеек из первой строки.
For i = 1 To 10
b(i) = cells(3, i).value
Next i
'Алгоритм сравнения массива а с массивом b.
For i = 1 To 10
k=0
For x = 1 To 10
If a(i) = b(x) Then
k=k+1
End If
Next x
13
d(i) = k
Next i
'Алгоритм сравнения массива b с массивом а
For i = 1 To 10
k=0
For x = 1 To 10
If b(i) = a(x) Then
k=k+1
End If
Next x
e(i) = k
Next i
'При условии, что элементы массивов равны и количество их взаимных повторов
больше 2, то значение элемента массива а заменяется пустым значением.
For x = 1 To 10
For i = 1 To 10
If a(i) = b(x) And d(i) >= 2 And e(x) >= 2 Then a(i) = ""
Next i
Next x
'Производится перестановка элементов массива а таким образом, что все элементы с
пустым значением перемещаются в конец массива
x=1
For p = 1 To 10
For i = 1 To 9
If a(i) = "" Then
a(i) = a(i + 1)
a(i + 1) = ""
End If
Next i
Next p
14
'Производится подсчёт оставшихся элементов массива а
x=0
For i = 1 To 10
If a(i) <> "" Then x = x + 1
Next i
'Производится изменение размера массива а с сохранением данных
For y = 1 To x
ReDim Preserve a(x)
Next y
'Происходит заполнение значениями преобразованного массива а ячеек седьмой
строки.
For i = 1 To x
cells(7, i).value = a(i)
Next i
End Sub
Заключение
15
Данная курсовая работа рассматривает этапы разработки приложения, работа
которого описана в главе «Задание».
Основными этапами создания программы являются:
1. Разработка эскизного и технического проектов программы. Это назначение и
область применения программы, постановка задачи, описание алгоритма
программы, организация входных и выходных данных, выбор состава
технических и программных средств.
2. Разработка рабочего проекта программы. Данная задача предусматривает
описание разработки программы, приведение текста программы, а также ее
описание и тестирование.
3. Внедрение программы. Задача предусматривает описание этапов выполнения
программы, и их пояснения.
Программа реализована на основе языка программирования высокого уровня
Visual Basik for Applications.
16
Список использованной литературы
17
Глоссарий
№
Понятие Определение
п/п
Проименованная либо адресуемая
иным способом область памяти, имя
или адрес которой можно
1 Переменная
использовать для осуществления
доступа к данным, находящимся в
переменной (по данному адресу).
Упорядоченный набор данных, для
хранения данных одного типа,
2 Массив
идентифицируемых с помощью
одного или нескольких индексов.
Массив, размер которого не
3 Статический массив меняется во время исполнения
программы.
Массив, размер которого может
4 Динамический массив меняться во время исполнения
программы.
Цикл, в котором некоторая
переменная изменяет своё значение
от заданного начального значения
5 Цикл с перечислением до конечного значения с некоторым
шагом, и для каждого значения этой
переменной тело цикла выполняется
один раз.
18
Конструкция языка
программирования,
обеспечивающая выполнение
определённой команды (набора
команд) только при условии
6 Оператор ветвления
истинности некоторого логического
выражения, либо выполнение одной
из нескольких команд (наборов
команд) в зависимости от значения
некоторого выражения.
Множество значений, которые
могут быть присвоены переменной
7 Тип данных
и операции, которые могут быть с
нею произведены.
Массив, в разные элементы
которого могут быть
8 Гетерогенный массив непосредственно записаны
значения, относящиеся к
различным типам данных.
Целое число, либо значение типа,
приводимого к целому,
9 Индекс массива указывающее на конкретный
элемент массива.
Самостоятельная часть,
10 Элемент являющаяся основой.
Приложение А
19
Блок-схема
Начало
k=0
d(i) = k
k=0
e(i) = k
Конец
Приложение B
20
Окно редактора VBA
Приложение С
21
Форма-приветствие
Приложение D
22
Типы данных в VBA
Размер
Значение переменной/константы
Тип данных ячейки
или примечание
(байт)
True(истина, логическая единица)
Boolean (логический) 2 байта
и False(ложь, логический нуль)
Byte (короткий целый
1 байт Целые числа от 0 до 255
беззнаковый)
Integer (целый) 2 байта Целые числа от -32 768 до 32 767
Целые числа от -2 147 483 648 до 2
Long (длинный целый) 4 байта
147 483 647
Числа с четырьмя десятичными
знаками от -922 337 203 685
Currency (денежный) 8 байт
477,5808 до
922 337 203 685 477,5807
Числа с дробной частью от
-3,402823*1038 до -1,401298*10-45
Single (с плавающей точкой
4 байта для отрицательных чисел, и от
одинарной точности)
1,401298*10-45 до 3,402823*1038 для
положительных чисел
От 1 января 100 года до 31 декабря
Date (дата) 8 байт
9999 года
String (строковый переменной
10 байт + 1
длины)
байт на Длина строки от 0 до 231 символов
символ
Задается
при
String (строковый постоянной
выполнении Длина строки от 1 до 216
длины)
оператора
Dim
Для чисел Значения соответствуют типу
Variant (универсальный)
-16 байт. данных Boolean, Byte, Integer,
23
Long, Single, Double, Date,
определяемому автоматически
Для строк –
22
Длина строки от 0 до 231 символов
байта+1байт
на символ
24