Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1-Lab1_VBA-2014.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.61 Mб
Скачать

Лабораторная работа 1 Реализация программ линейной структуры в среде vba

Цель работы: приобретение навыков по работе в среде Visual Basic for Application (VBA), по использованию данных различных типов, по использованию функций ввода и вывода в VBA.

Задание на лабораторную работу

1. Освоить функции VBA для организации диалога по вводу исходных данных и вывода результатов вычислений.

2. Составить программу ввода значений переменных заданного типа и вывода результатов вычислений в стандартном и заданном формате (в соответствии с вариантом задания).

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

1. Получить вариант задания.

2. Изучить функции VBA для подготовки текста программы, компиляции и запуска программы на выполнение. Освоить функции редактора для подготовки текста программы.

3. Изучить структуру VBA, операторы определения переменных стандартных типов и операторы ввода-вывода значений переменных указанных типов.

4. Подготовить текст программы в соответствии со своим вариантом и отладить программу с использованием среды VBA.

5. Устно ответить на контрольные вопросы.

6. Оформить и защитить отчет.

Порядок создания программы

Запуск VBA и сохранение программы. Чтобы запустить VBA необходимо:

  1. последовательно выполнить следующие команды:

Пуск/Все программы/Microsoft Office/ Microsoft Office Excel;

  1. Последовательно выполнить следующие команды:

СервисМакросРедактор Visual Basic (для Office’2003) или нажать клавиши <Alt>+<F11> (для Office’2007 и выше).

В результате выполненных действий откроется окно VBA (рисунок 1). Для вставки модуля необходимо выполнить следующие команды: InsertModule.

1

2

3

4

5

6

Рисунок 1 – Окно VBA

Структура окна VBA. Окно VBA имеет следующую структуру:

  1. Строка главного меню – содержит пункты меню (рисунок 2).

Рисунок 2 – Строка главного меню

  1. Панель инструментов – содержит пиктограммы команд, необходимых для создания и проверки разрабатываемого приложения (рисунок 3).

Рисунок 3 – Панель инструментов

  1. Окно обозревателя (Project Explorer) – отображает структуру файлов форм и модулей текущего проекта, которые могут отображаться в окне редактора (4).

Рисунок 4 – Окно обозревателя (Project Explorer)

  1. Окно свойств (Рroperties) – отображает установки свойств для текущей формы или элемента управления (рисунок 5).

Рисунок 5 – Окно свойств (Рroperties)

  1. Окно редактора кода – отображает текст макроса, его можно редактировать (рисунок 6).

.

Рисунок 6 – Окно редактора кода

  1. Окно отладки (Immediate – окно немедленного исполнения) – позволяет исполнить любую команду VBA или процедуру (рисунок 7), или вывести отладочную информацию, например, набрав ?2*2, получим ответ: 4.

Рисунок 7 – Окно отладки

Если при открытии VBA окно отладки не отображается, его можно включить, выбрав в строке главного меню команды: View / Immediate Window (рисунок 8).

Рисунок 8 – Запуск окна отладки

Сохранение программы. Сохранение программы в VBA имеет некоторые особенности:

  1. при запуске VBA из приложений MS Office, например, из программы Excel, сохранить программу можно с помощью команд: Файл – Сохранить как. По умолчанию книга сохраняется с расширением .xlsx ( ), но данное сохранение не поддерживает макросы;

  2. при сохранении необходимо: задать файлу имя и выбрать тип файла: . Книга сохранится с расширением .xlsm ( ). При данном расширении сразу видно, что это не просто книга Excel, а с поддержкой макросов.

Запуск созданной программы. Запустить созданную программу из окна редактора можно нажав клавишу F5, или воспользоваться командой из пункта меню Run. Возможно исполнение программы в режиме отладки меню Debug (нажать клавишу F8). Значение переменной во время отладки можно узнать, подведя указатель мыши к имени переменой в окне редактора.

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

Тип данных (Data Type) – это термин, относящийся к определенным видам данных, которые VBA сохраняет и которыми может манипулировать. В таблице 1 обобщены типы данных и показано, какой объем памяти занимает каждый тип, кратко описаны типы данных и дан диапазон значений, которые данный тип может сохранять.

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

Название

типа

Размер, байт

Описание и диапазон значения

Byte

1

Целые положительные числа от 0 до 255

Integer

2

Целые числа от -32768 до 32767

Long

4

Длинные целые числа от -2147483648 до 2147483647

Single

4

Вещественные числа обычной точности с плавающей точкой. Отрицательные числа:

от -3.402823∙1038 до -1.401298∙10-45.

Положительные числа:

от 1.401298∙10-45 до 3.402823∙1038

Double

8

Вещественные числа двойной точности с плавающей точкой. Отрицательные числа:

от -1.79769313486232∙10308 до

-4.94065645841247∙10-324.

Положительные числа: от 4.94065645841247∙10-324 до

1.79769313486232∙10308

Currency

8

Числа, имеющие до 15 цифр до десятичной точки и 4 цифры после нее (денежные единицы). От -922337203685477.5808 до 922337203685477.5807

Boolean

2

Для хранения логических значений; может содержать только значения True (Истина) или False (Ложно)

Date

8

Для хранения комбинации информации о дате и времени. Диапазон дат может быть от 1 января 100 года до 31 декабря 9999 года. Диапазон времени от 00:00:00 до 23:59:59

String (строка пе-ременной длины)

10 байт длина строки

Используется для хранения текста.

Может содержать от 0 символов до (приблизительно) 2 миллиардов символов

String (строка фиксиро–ванной длины)

Длина строки (один байт на один символ)

Используется для хранения текста.

Может (содержать от одного до(приблизительно) 65400 символов

Variant

16 байт + 1 байт/символ

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

Object

4

Используется для доступа к любому объекту, распознаваемому VBA. Сохраняет адрес объекта в памяти

Переменные. Переменная – это имя, которое дают области компьютерной памяти, используемой для хранения данных какого-либо типа.

При выборе имени переменной необходимо соблюдать определенные правила:

  • имя переменной должно начинаться с буквы алфавита;

  • имена переменных не могут содержать пробелы, точку или любой другой символ, который VBA использует для обозначения математических операций и операций сравнения;

  • имена переменных не могут превышать 255 символов;

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

  • имена переменных не чувствительны к состоянию регистра, т.е. нет разницы между MyNumber, mynumber, mYnUmBeR.

Тип переменной объявляется в том же операторе, который используется для объявления самой переменной. Можно объявлять типизированную переменную либо при неявном объявлении, либо при явном – с помощью оператора Dim.

Для объявления переменной и ее типа с помощью оператора Dim необходимо добавить ключевое слово As перед именем переменной, а затем ввести имя типа данных для этой переменной.

Константы. Константа (constant) – это значение в программе VBA, которое не меняется.

VBA позволяет создавать именованные константы (named constants). Именованная константа, подобно переменной, имеет заданное ей имя; это имя представляет конкретное неизменяемое значение. Синтаксис для объявления именованных констант имеет вид:

Const nameN = valueN

где nameN – представляет любой допустимый идентификатор;

valueN – любое значение данных: численное, строковое или дата.

Например:

Const Pi = 3.14,

Const Pi2 = 2*Pi {Задание константного выражения}

Правила написания констант:

  • строковые константы должны быть заключены в двойные кавычки («…»);

  • пустая строковая константа (называемая нулевой строкой – null string или empty string) обозначается двумя двойными кавычками, между которыми ничего нет ("");

  • строковая константа должна вся находиться на одной и той же строке;

  • численные константы должны состоять только из числовых символов от 0 до 9;

  • численная константа может начинаться со знака « – » и может содержать десятичную точку « . »;

  • необходимо помещать все константы даты между знаками фунта (#).

Например:

#2-5-97 21:17:34# #February 5, 1997 9:17:34pm# #Маr-31-97# #15 April 1997#

Арифметические операторы VBA. Арифметические операторы VBA приведены в таблице 2.

Таблица 2 – Арифметические операторы VBA

Оператор

Синтаксис

Описание

+

A + B

Сложение: складывает А и В.

-

A - B

Вычитание: вычитает из А В.

*

A * B

Умножение: перемножает А на В.

/

A / B

Деление: делит А на В.

\

A \ B

Целочисленное деление: делит А на В, отбрасывая дробную часть. Результат - целое число.

Mod

A Mod B

Деление по модулю: делит А на В, возвращая только остаток операции деления как целое число.

^

A ^ B

Возведение в степень: возводит А в степень В.

Математические функции. Математические функции приведены в таблице 3.

Таблица 3 – Математические функции

Функция (аргумент)

Описание функции

Abs(N)

Возвращает абсолютное значение N

Cos(N)

Косинус угла N, где N – это угол, измеренный в радианах

Sin(N)

Возвращает синус угла; N – это угол, измеренный в радианах

Tan(N)

Возвращает тангенс угла; N – угол в радианах

Atn(N)

Возвращает арктангенс N как угол в радианах

Exp(N)

Возвращает константу е, возведенную в степень N е – это основание натуральных логарифмов и она (приблизительно) равна 2,718282

Fix(N)

Возвращает целую часть N. Fix не округляет число, а отбрасывает любую дробную часть. Если N является отрицательным, Fix возвращает ближайшее отрицательное целое большее, чем или равное N

Int(N)

Возвращает целую часть N. Int не округляет число, а отбрасывает любую дробную часть. Если N является отрицательным, Int возвращает ближайшее отрицательное целое меньшее, чем или равное

Log(N)

N Возвращает натуральный логарифм N

Rnd(N)

Возвращает случайное число; аргумент является необязательным. Используйте функцию Rnd только после инициализации VBA-генератора случайных чисел оператором Randomize

Sgn(N)

Возвращает знак числа: –1, если N – отрицательное; 1, если N –положительное; 0, если N равно 0

Sqr(N)

Возвращает корень квадратный из N. VBA отображает ошибку исполнения, если N – отрицательное

Виды информационных сообщений. В VBA существует множество информационных сообщений.

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

Рисунок 9 –Пример синтаксической диаграммы VBA

Синтаксическая диаграмма приведённого примера отображает:

Sub – начало программного кода и начало программы;

End Sub – конец программы;

Пример () – название программы. Название может содержать латинские буквы, русские буквы, цифры, но нельзя ставить: пробелы, специальные символы;

MsgBox – функция выводит на экран диалоговое окно, содержащее сообщение, устанавливая режим ожидания нажатия кнопки пользователем. При написание этого слова в редакторе VBA, внизу подсвечивается подсказка, по которой можно понять, что именно надо написать;

Promt – текст сообщения (в данном случае: Всем привет! Продолжим?). Текс записывается всегда в двойных кавычках;

Buttons As VbMsgBoxStyle... – тип сообщения, который при наборе подсвечивается. Можно просто выбрать и нажать клавишу Tab;

Title – заголовок сообщения, который пишется в верхнем поле (там же где и элемент управления окном Закрыть. В данном случае: Вам сообщение).

Каждое свойство объекта пишется через запятую. Точки в конце нигде не ставятся.

Информационные сообщения. В VBA используются следующие виды информационных сообщений.

Вид сообщения: vbAbortRetryIgnore (рисунки 10, 11).

Рисунок 10 – Программный код

Рисунок 11 – Сообщение

Вид сообщения: vbApplicationModal (рисунки 12, 13).

Рисунок 12 – Программный код

Рисунок 13 – Сообщение

Вид сообщения: vbCritical (рисунки 14, 15).

Рисунок 14 – Программный код

Рисунок 15 – Сообщение

Вид сообщения: vbDefaultButton1 (рисунки 16, 17).

Рисунок 16 – Программный код

Рисунок 17 – Сообщение

Вид сообщения: vbExclamation (рисунки 18, 19).

Рисунок 18 – Программный код

Рисунок 19 – Сообщение

Вид сообщения: vbInformation (рисунки 20, 21).

Рисунок 20 – Программный код

Рисунок 21 – Сообщение

Вид сообщения: vbMsgBoxHelpButton (рисунки 22, 23).

Рисунок 22 – Программный код

Рисунок 23 – Сообщение

Вид сообщения: vbMsgBoxRight (рисунки 24, 25).

Рисунок 24 – Программный код

Рисунок 25 – Сообщение

Вид сообщения: vbMsgBoxRtlReading (рисунки 26, 27).

Рисунок 26 – Программный код

Рисунок 27 – Сообщение

Вид сообщения: vbQuestion (рисунки 28, 29).

Рисунок 28 – Программный код

Рисунок 29 – Сообщение

Вид сообщения: vbRetryCancel (рисунки 30, 31).

Рисунок 30 – Программный код

Рисунок 31 – Сообщение

Вид сообщения: vbSystemModal (рисунки 32, 33).

Рисунок 32 – Программный код

Рисунок 33 – Сообщение

Вид сообщения: vbYesNo (рисунки 34, 35).

Рисунок 34 – Программный код

Рисунок 35 – Сообщение

Вид сообщения: vbYesNoCancel (рисунки 36, 37).

Рисунок 36 – Программный код

Рисунок 37 – Сообщение

Также можно комбинировать сообщения, например: vbQuestion + vbYesNo (рисунки 38, 39).

Рисунок 38 – Программный код

Рисунок 39 – Сообщение

Функции в VBA. Для организации диалога чаще всего используются следующие функции.

Функция InputBox – функция выводит на экран диалоговое окно с кнопкой закрытия, содержащее заданное сообщение, поле ввода, кнопки OK, Cancel:

InputBox(Prompt[,Title] [,Default] [,XPos] [,YPos] [,HelpFile,Context]).

Функция MsgBox – функция выводит на экран диалоговое окно, содержащее сообщение, устанавливая режим ожидания нажатия кнопки пользователем:

MsgBox(Prompt, [Buttons], [Title], [HelpFile], [Context]).

Элементы функции VBA приведены в таблице 4.

Таблица 4 – Элементы функции VBA

Элементы функции

Описание элемента

Prompt

Обязательный. Строковое выражение, отображаемое как сообщение в диалоговом окне. Максимальная длина параметра Prompt составляет приблизительно 1024 символа и зависит от ширины используемых символов. Строковое значение Prompt может содержать нескольких физических строк. Для разделения строк допускается использование символа возврата каретки, символа перевода строки или комбинации этих символов

Buttons

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

Title

Необязательный. Строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот параметр опущен, в строку заголовка помещается имя приложения. Максимальное число символов заголовка около 50

Default

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

XPos

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

YPos

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

HelpFile

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

Context

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

Ошибки компиляции. Полный перечень ошибок, возможных при отладке программы, представлен в приложении А.

Пример подготовки и выполнения программы. Текст программы показан на рисунке 40, работа с диалоговыми окнами – на рисунках 41, 42.

Рисунок 40 – Текст программы

Рисунок 41 – Ввод значений переменных х и у

Рисунок 42 – Результат работы программы

Структура программы

Структура программы может выглядеть следующим образом:

Sub пример() 1

Dim x As Integer, y As Integer, s As Integer 2

x = InputBox(("введите х"), ["Сумма двух чисел "]) 3

y = InputBox(("введите y"), ["Сумма двух чисел"]) 4

s = x + y 5

MsgBox ("Сумма двух чисел =" & s) 6

End Sub 7

Комментарии к тексту программы:

1 строчка – начало и название программы (Обратите внимание, что скобки ставятся автоматически);

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

3, 4 строчки – ввод чисел и отображение в строке заголовка диалогового окна;

5 строчка – вычисление суммы двух чисел;

6 строчка – вывод результата на экран;

7 строчка – конец программы.

Варианты заданий

Контрольное задание 1. Освоить функции VBA для организации диалога по вводу исходных данных и выводу результатов вычислений. Варианты заданий приведены в таблице 5.

Таблица 5 – Варианты заданий

Вариант

Задание

1

Найдите среднее арифметическое трёх чисел и умножьте полученное число на 2.

2

Найдите среднее арифметическое двух чисел и умножьте полученное число на 3.

3

Сложите два любых числа и полученную сумму умножьте на 3.

4

Найдите произведение трёх чисел и умножьте полученное число на 2.

5

Разность двух чисел возведите в третью степень.

6

Частное двух чисел возведите в пятую степень.

7

Найдите среднее арифметическое трёх чисел и умножьте полученное число на 4.

8

Найдите среднее арифметическое двух чисел и умножьте полученное число на 5.

9

Сложите два любых числа и полученную сумму умножьте на 4.

10

Найдите произведение трёх чисел и умножьте полученное число на 7.

11

Разность двух чисел возведите в четвёртую степень.

12

Частное двух чисел возведите в шестую степень.

13

Найдите среднее арифметическое трёх чисел и умножьте полученное число на 9.

14

Найдите среднее арифметическое двух чисел и умножьте полученное число на 9.

15

Сложите два любых числа и полученную сумму умножьте на 9.

16

Найдите произведение трёх чисел и умножьте полученное число на 8.

17

Разность двух чисел возведите в седьмую степень.

18

Частное двух чисел возведите в третью степень.

19

Найдите среднее арифметическое трёх чисел и умножьте полученное число на 1,5.

20

Сложите два любых числа и полученную сумму умножьте на 2,5.

Контрольное задание 2. Разработать в VBA программу для вычисления значения функции. Варианты заданий приведены в таблице 6.

Таблица 6 – Варианты заданий

Номер варианта

Тип данных

Функция

1

Integer

Y=|A|*(X+1)2

2

Integer

Y=|A|-B2

3

Integer

Y=B2+|A|

4

Integer

Y=|A|-|B|

5

Integer

Y=(A+B)2

6

Real

Y=|A+B|

7

Real

Y=2 * A * |B|

8

Real

Y=A*(|X|-1)2

9

Real

Y=|A|-(B+1)2

10

Real

Y=B2+(|A|-1)

11

Integer

Y=|A|-|B|+5

12

Integer

Y=(A+B-1)2

13

Integer

Y=|A+B|-2*A

14

Integer

Y=2 * |A| * (B-1)

15

Integer

Y=B2+(|A|-B)

16

Integer

Y=|A+B|

17

Integer

Y=2 * A * |B|

18

Integer

Y=A*(|X|-1)2

19

Integer

Y=|A|-(B+1)2

20

Integer

Y=B2+(|A|-1)

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

  1. Какова структура программы в VBA?

  2. Как объявляются переменные в VBA?

  3. Назовите правила описания переменных.

  4. Чем функция InputBox отличается от MsgBox?

  5. Как выполнить компиляцию программы?

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

Отчёт должен иметь следующие разделы:

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

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

  3. Состав и структура данных.

  4. Описание программы:

  • Блок-схема (выполненная в Visio);

  • Текст программы;

  • Результат работы программы.

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

  2. Вывод по лабораторной работе.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]