- •Л.В. Рыбакова Основы программирования в среде Visual Basic for Application (vba)
- •Содержание
- •1. Пользовательский интерфейс vba 5
- •2. Разработка программного кода 18
- •3. Объектно-ориентированное программирование на vba 100
- •Введение
- •1. Пользовательский интерфейс vba
- •1.1 Особенности среды программирования
- •1.2 Запуск vba
- •1.3 Структура редактора Visual Basic
- •1.3.1 Окно проекта Project-vbaProject
- •1.3.2 Окно редактирования кода
- •1.3.3 Окно редактирования форм
- •1.3.4 Окно свойств “Properties”
- •1.3.5 Окно панели элементов управления (Toolbox)
- •Контрольные вопросы
- •2. Разработка программного кода
- •2.1 Структура проекта vba
- •2.2 Пользовательские подпрограммы-функции
- •2.3 Пользовательские подпрограммы-процедуры
- •2.4 Данные и их описание
- •2.4.1 Алфавит и лексемы языка
- •2.4.2 Переменные и константы
- •2.4.3 Объявление переменных
- •2.4.4 Объявление констант
- •2.4.5 Строковые переменные
- •2.4.6 Области видимости переменных и констант
- •2.4.7 Типы данных
- •2.5 Функции в vba
- •2.5.1 Математические встроенные функции
- •2.5.2 Математические функции, не представленные в vba
- •2.5.3 Функция форматирования данных
- •2.5.4 Функции преобразования типов
- •2.6 Операторы, выражения и операции
- •2.6.1 Операция присваивания
- •2.6.2 Математические операции
- •2.6.3 Операции отношения
- •2.6.4 Логические операции
- •2.6.5 Строковые операции
- •2.7 Отладка программ и обработка ошибочных ситуаций
- •2.7.1 Отладка
- •2.7.2 Точки останова (контрольные точки)
- •2.7.3 Наблюдение за данными с помощью просматриваемых значений
- •2.7.4 Пошаговое выполнение программы
- •2.7.5 Обработка ошибок
- •Программирование алгоритмов линейной структуры
- •2.8 Условный оператор
- •Программирование алгоритмов разветвляющейся структуры
- •2.9 Оператор выбора (переключатель)
- •Программирование алгоритмов ветвлений со многими вариантами
- •2.10 Операторы цикла
- •2.10.1 Циклы с параметром For … Next
- •2.10.2 Циклы с условием (итерационные)
- •Программирование алгоритмов циклической структуры
- •Варианты индивидуальных экономических задач
- •2.11 Табулирование функции
- •2.11.1 Табулирование функции одной переменной
- •2.11.2 Табулирование функции двух переменных (вложенные циклы)
- •Разработка процедур для табулирования функции
- •2.12 Массивы
- •2.12.1 Объявление массива
- •2.12.2 Динамические массивы
- •2.12.3 Действия над массивами
- •2.12.4 Действия над элементами массива
- •2.12.5 Формирование массива
- •2.12.6 Одномерные массивы
- •Создание процедур для обработки последовательности
- •2.12.7 Двумерные массивы. Вложенные циклы
- •Создание процедур для обработки табличных данных
- •Контрольные вопросы:
- •3. Объектно-ориентированное программирование на vba
- •3.1 Разработка программы создания приложения с помощью Форм
- •Разработка пользовательского приложения с помощью объектов Форм
- •3.2 Встроенные диалоговые окна в vba
- •3.2.1 Окна сообщений (MsgBox)
- •3.2.2 Окна ввода
- •Разработка проекта встроенных диалоговых окон в vba
- •Варианты индивидуальных заданий
- •3.3 Объекты формы в vba: кнопки-переключатели, контрольные индикаторы, рамки
- •Разработка пользовательского приложения с помощью объектов: кнопка-переключатель, контрольный индикатор, рамка
- •3.4 Объекты формы в vba: Полоса прокрутки и Счетчик
- •Разработка пользовательского приложения с помощью объектов: полоса прокрутки, счетчик
- •3.5 Интеграция приложений: ms Excel и ms Word
- •3.5.1 Открытие документа ms Word функцией Create Object
- •3.5.2 Открытие документа ms Word функцией GetObject
- •Интеграция популярных приложений, входящих в пакет ms Office
- •Контрольные вопросы:
- •Список используемой литературы
- •Рыбакова Людмила Владимировна
2.12.6 Одномерные массивы
Пример 1.
Формирование массива в программе с помощью последовательности операторов.
Постановка задачи. Реализовать на языке VBA алгоритм поиска наибольшего элемента последовательности с определением его местонахождения.
Технология выполнения задания:
1. Набрать в стандартном модуле проекта следующую пользовательскую процедуру:
Sub primer()
Const n = 10
Dim N_max As Integer
Dim i As Integer
Dim Max As Single
Dim B(1 To n) As Single
B(1) = 0.2: B(2) = 1.4: B(3) = 0.6
B(4) = 0.121: B(5) = 0.77: B(6) = 9.45
B(7) = 8.21: B(8) = 0.4: B(9) = 0.3
B(10) = 4.11
Max = B(1)
N_max = 1
For i = 2 To n
If B(i) > Max Then
Max = B(i)
N_max = i
End If
Next i
Debug.Print "Max= " & Max & " N_max= " & N_max
End Sub
2. Вычислить.
Пример 2.
Использование функции Array (массив) для задания одномерного массива.
Постановка задачи. Реализовать на языке VBA алгоритм поиска наибольшего элемента последовательности с определением его местонахождения.
Технология выполнения задания:
1. Набрать в стандартном модуле проекта следующую пользовательскую процедуру:
Option Base 1
Sub primer()
Dim i As Integer
Dim Max As Single
Dim N_Max As Integer
Dim B As Variant
B = Array(0.1, 1.12, 3.12, 0.45, 101.47, 12.4, 10.12, 10.11, 6.47, 13.4)
Max = B(1)
N_Max = 1
For i = 2 To 10
If B(i) > Max Then
Max = B(i)
N_Max = i
End If
Next i
Debug.Print "Max= " & Max & " N_max= " & N_Max
End Sub
2. Вычислить.
Лабораторная работа № 6
Создание процедур для обработки последовательности
Цель: приобретение навыков программирования обрабатывать последовательности с помощью пользовательской подпрограммы-процедуры. Индивидуальные варианты лабораторной работы № 6 представлены в таблице 23 (2 часа).
Варианты индивидуальных заданий
Таблица 23
Разработать процедуру пользователя для обработки последовательности |
|
1 |
Даны натуральные числа n, a1, a2, … ,an. Определить количество ak последовательности a1,a2,…,an являющихся нечётными числами |
2 |
Даны натуральные числа n, a1, a2, … ,an. Определить количество ak последовательности a1,a2,…,an кратных 3 и не кратных 5. |
3 |
Даны натуральные числа n, a1, a2, … ,an. Определить количество ak последовательности a1,a2,…,an являющихся квадратами чётных чисел. |
4 |
Даны натуральные числа n, a1, a2, … ,an. Определить количество ak последовательности a1,a2,…,an удовлетворяющих условию . |
Продолжение таблицы 23
5 |
Даны натуральные числа n, a1, a2, … ,an. Определить количество ak последовательности a1,a2,…,an удовлетворяющих условию . |
6 |
Даны натуральные числа n, q1, q2,…, qn. найти те члены qi последовательности q1, q2,…, qn которые являются удвоенными нечётными числами. |
7 |
Даны натуральные числа n, q1, q2,…, qn. найти те члены qi последовательности q1, q2,…, qn которые при делении на 7 дают остаток 1.2 или 5. |
8 |
Даны натуральные числа n, q1, q2,…, qn. найти те члены qi последовательности q1, q2,…, qn которые обладают тем свойством, что корни уравнения действительны и положительны. |
9 |
Вычислить , где
|
10 |
Дано натуральное число n. Получить сумму тех чисел вида , которые являются удвоенными нечётными. При отсутствии таких чисел искомая сумма равна нулю. |
11 |
Даны целые числа а1,…,а50. Получить сумму тех чисел данной последовательности, которые кратны 5. |
12 |
Даны целые числа а1,…,а50. Получить сумму тех чисел данной последовательности, которые нечётны и отрицательны. |
13 |
Даны целые числа а1,…,а50. Получить сумму тех чисел данной последовательности, которые удовлетворяют условию . |
14 |
Даны натуральное число n, действительные числа a1, a2, … ,an. в последовательности a1, a2, … ,an все отрицательные члены увеличить на 0.5, а все неотрицательные заменит на 0.1. |
15 |
Вычислить , где
|
16 |
Даны целые числа a, n, x1,…,xn (n>0). Определить, каким по счёту идёт в последовательности x1,…,xn член, равный а. Если такого члена нет, то ответом должно быть число 0. |
17 |
Даны натуральные числа n, a1, a2, … ,an. В последовательности a1, a2,…,an получить сумму положительных и число отрицательных членов. |
Продолжение таблицы 23
18 |
Даны натуральные числа n, a1, a2, … ,an. Заменить все большие семи члены последовательности a1, a2, … ,an числом 7. Вычислить количество таких членов. |
19 |
Даны целые числа a1, a2, … ,a45. Получить число отрицательных членов последовательности a1, a2, … ,a35 и число нулевых членов всей последовательности a1, a2, … ,a45. |
20 |
Запишите +1 вместо максимального элемента массива (а1, а2, …, а50), а -1 вместо минимального. |