Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИНФ_Лаб_Работы 12-16_VBA_2010.pdf
Скачиваний:
22
Добавлен:
31.05.2015
Размер:
428.66 Кб
Скачать

Работа 12. Начала программирования на языке VBA. Процедуры

Общие указания

Цель работы: освоение процесса программирования процедур.

Овладение основами программирования является важным средством развития алгоритмического мышления. Программирование на языке VBA (Visual Basic for Applications) удобно по двум причинам: 1) этот язык является развитой версией языка Бейсик; 2) он реализован в большинстве компонентов пакета MS Office и позволяет приспособить эти программы к собственным потребностям.

Практическое задание

1.Запустить программу MS Excel. Сохранить книгу (пока еще пустую) в личной папке, присвоив файлу имя по образцу «Программирование_Петров».

2.Выбрать команду Сервис — Макрос — Безопасность. Установить уровень безопасности «Низкая» (только в этом режиме можно работать с объектами VBA).

3.Войти в окно редактора VBA по команде Сервис — Макрос — Редактор_Visual_Basic, ознакомиться с элементами окна и фреймами (вложенными окнами): Окно_проекта (Project Explorer), Окно_свойств (Properties Window). При отсутствии этих фреймов отобразить их на экране при помощи команд меню Вид (View).

4.Вставить объект Модуль по команде Вставка — Модуль (Insert — Module). Это сопровождается появлением в окне проекта значка объекта Module1. Для пользователя модуль показывается как лист в главном окне редактора, на котором следует писать программный код (листинг).

Рис. 8. Окно редактора Visual Basic.

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

Рис. 9.

Замечание. В среде Visual Basic некоторые операции ввода операторов автоматизированы. Например, после ввода строки заглавного оператора процедуры Sub, за которым следует имя процедуры и круглые скобки, автоматически появляется оператор End Sub. Все другие операторы процедуры образуют тело процедуры. Их следует записывать между этими строками. В служебных словах необязательно вводить заглавные буквы, т. к. по завершении ввода строки среда приведет все служебные слова к стандартному виду.

6. Вывести на экран окно Immediate Window. В это окно будут выводиться результаты вычислений при исполнении процедуры по инструкции Debug.Print. запустить процедуру нажатием функциональной клавиши F5 и просмотреть результаты ее исполнения.

7. Выписать в тетрадь текст процедуры. Отдельно выписать образцы инструкций начала и конца процедуры (Sub / End Sub), описания переменных (Dim), ввода данных с клавиатуры, вывода данных на экран, конструкции проверки условий (если / то / иначе /всё). Начертить

блок-схему процедуры.

8.Составить и ввести в модуль код процедуры Progr, алгоритм, которой представлен на блок-схеме

(см. рис. 9).

Поставить курсор в текст процедуры и проверить

ееисполнение.

9.Написать процедуру вычисления факториала натурального числа.

Sub Factorial(N As Integer)

If N < 0 Then Exit Sub

Dim I As Integer, M As Long

M = 1

For I = 1 To N

M = M * I

Next I

Debug.Print M

End Sub

Вэтой процедуре не задано значение переменной N

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

исполняется по вызову из другой процедуры инструкцией Call Factorial(P), где P — переменная хранящая значение параметра исполнения процедуры.

10. Переместить курсор под написанную процедуру и ввести новую процедуру Raschet, вызывающую вычисление факториала.

Sub Raschet()

Dim P As Integer

P = InputBox("Введите целое число")

Call Factorial(P)

End Sub

Поставить курсор в тексте процедуры, запустить ее на счет. Введя последовательно несколько чисел, проверить правильность вычисления факториала.

11.Самостоятельно составить алгоритм и написать процедуру по индивидуальному заданию, полученному от преподавателя.

12.В тетради начертить блок-схемы для всех рассмотренных процедур.

Скопировать в текстовый документ (Блокнот) листинги всех отлаженных процедур. Показать преподавателю.

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

1.Где пишутся листинги (коды) процедур?

2.Какова структура листинга процедуры?

3.Что записывается в заголовок процедуры после служебного слова Sub?

4.Каким оператором осуществляется присвоение значения переменной в Visual Basic?

5.Каким оператором в Visual Basic организуется ввод данных? Вывод данных?

6.Какова структура оператора ветвления если / то / иначе / кесли в Visual Basic?

7.Как организуются циклы с параметром?

8.Как осуществляется обращение к процедуре из другой процедуры?

9.Как описываются переменные в Visual Basic? Для чего это необходимо?

Работа 13. Программирование на языке VBA. Функции Excel, определенные пользователем

Общие указания

Цель работы: освоение процесса программирования функций, определяемых пользователем.

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

программирования на языке VBA, пользователь может пополнить коллекцию этих функций.

Практическое задание

1. Открыть собственную рабочую книгу. При отсутствии в ней чистых листов вставить новый лист. Присвоить листу имя «Собственные_функции». Начиная с ячейки A1, ввести следующую таблицу (табл. 1). Заполнить первую колонку числами от –10 до 100 с интервалом 10 градусов.

Табл. 1

Температура, °C Температура, °F

–10

0

2. Начиная с ячейки D1, набрать следующую таблицу (табл. 2).

 

 

 

 

 

Табл. 2

№№

Фамилия студента

Имя

Отчество

Курс

Группа

1

Волкова

Алевтина

Карповна

1

А0702

2

Юшенко

Александр

Григорьевич

1

А0702

3

Ильина

Ольга

Ивановна

2

А0603

4

Круглова

Надежда

Фёдоровна

1

А0702

5

Победоносенко

Ирина

Николаевна

1

А0703

6

Караваев

Афанасий

Гаврилович

2

А0601

7

Гребнева

Василиса

 

3

А0501

8

Мустаков

 

 

3

А0503

3. Выбрать команду Сервис — Макрос — Безопасность. Установить уровень безопасности «Низкая» (только в этом режиме можно работать с объектами VBA).

4.Войти в окно редактора VBA по команде Сервис — Макрос — Редактор_Visual_Basic, ознакомиться с элементами окна и фреймами (вложенными окнами): Окно_проекта (Project Explorer), Окно_свойств (Properties Window). При отсутствии этих фреймов отобразить их на экране при помощи команд меню Вид (View).

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

Замечание. В среде Visual Basic некоторые операции ввода операторов автоматизированы. Например, после ввода заглавного оператора функции автоматически появляется оператор End Function.

Function ФАРЕНГЕЙТ(Температура_Цельсия As Single) As Single

'перевод температуры по Цельсию

'в температуру по Фаренгейту

ФАРЕНГЕЙТ = Температура_Цельсия * 1.8 + 32 End Function

6. Переключиться на рабочий лист. В ячейку B2 ввести формулу, включающую функцию ФАРЕНГЕЙТ. Воспользоваться мастером функций. Эта функция будет находиться в категории «Определённые пользователем». В качестве аргумента взять ссылку на ячейку A2. При помощи маркёра заполнения скопировать формулу в другие ячейки столбца B.

7.Записать в модуль листинг функции ИНИЦ, преобразующей фамилию, имя и отчество

встроку вида «Волкова А. К.».

function ИНИЦ(Фамилия$, Имя$, Отчество$) as string

'Преобразование табличной записи

'|Кольцов|Юрий|Сергеевич|

'в строку вида "Кольцов Ю. С." иниц = фамилия

иниц = иниц + ” ” + left(имя, 1) + ”.”

иниц = иниц + ” ” + left(отчество, 1) + ”.” end function

8.Переключиться на рабочий лист. В ячейку J2 ввести формулу, включающую функцию ИНИЦ. Воспользоваться мастером функций, она будет находиться в категории «Определённые пользователем». Как аргументы ввести ссылки на соответственные ячейки таблицы. При помощи маркёра заполнения скопировать формулу в другие ячейки столбца H, чтобы получить упрощенный список студентов.

9.Вернуться в окно Visual Basic. Скопировать код функции ИНИЦ и вставить его ниже. Переименовать новую функцию в ФИО. Внести в код функции такие поправки, чтобы при отсутствии в таблице данных имени или отчества в результате не появлялись точки. Внести в

код операторы проверки условий: имя > ”” и отчество > ””. Предотвратить также лишние пробелы если они имеются в конце фамилии — в расчеты включить вместо аргумента Фамилия выражение Trim(Фамилия). Модифицированный код должен принять следующий вид.

Function ФИО(Фамилия$, Имя$, Отчество$) As String

'Преобразование табличной записи

'|Кольцов|Юрий|Сергеевич|

'в строку вида "Кольцов Ю. С." ФИО = Trim(Фамилия)

If Trim(Имя) > "" Then

ФИО = ФИО + " " + Left(Trim(Имя), 1) + "." If Отчество > "" Then

ФИО = ФИО + " " + Left(Trim(Отчество), 1) + "." End If

End If

End Function

Проверить работу функции ФИО: в ячейки столбца K, начиная с K2, ввести формулу с этой функцией.

10.Скопировать полученные результаты (упрощенный список студентов) в документ Word, затем преобразовать их в текст. Для этого, выделив вставленную таблицу, вызвать команду Таблица — Преобразовать — Таблицу_в_текст.

11.Скопировать в документ Word листинги всех функций. В тетради начертить блоксхему функции ФИО Показать преподавателю.

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

1.Где пишутся листинги функций, определяемых пользователем?

2.Какова структура листинга (кода) функции, определяемой пользователем?

3.Что вписывается в заглавную строку листинга пользовательской функции после служебного слова Function?

4.Как осуществляется присвоение значения функции в VBA?

5.Каковы значения, вычисляемые встроенными функциями VBA (Left, Trim)? Каков смысл аргументов этих функций?

6.В чем различие функций Excel, функций, определенных пользователем, и встроенных функций VBA? Где могут применяться функции перечисленных видов (рабочий лист, программный код)?

Работа 14. VBA. Создание проекта

Общие указания

Цель работы: Освоение технологии объектно-ориентированного проектирования.

Одной из особенностей языка Visual Basic является возможность проектирования собственных программ-приложений, открывающихся в собственном экранном окне. В Visual Basic такое окно именуется «формой», а создаваемое приложение — «проектом». Создание проекта протекает по двум взаимосвязанным направлениям — проектирование формы и написание программного кода.

Программный код на языке Visual Basic имеет структурированный характер. Он содержит общие и частные процедуры, а также пользовательские функции (с последними мы уже познакомились в предыдущей работе. Процедура является минимальным программным модулем для решения узкой задачи. Её код начинается оператором Sub (сокр. от subroutine), а заканчивается оператором End Sub. За служебным словом Sub через пробел указывается имя процедуры и ставятся круглые скобки для указания параметров исполнения. Часто параметры отсутствуют, но скобки не опускаются. Имя процедуры, записанное в листинг другой процедуры после служебного слова Call, интерпретируется как оператор вызова этой процедуры на исполнение.

Частная процедура начинается оператором Private Sub.

Пример: Private Sub Кнопка1_Click(). Эта процедура исполняется при наступлении события «щелчок по кнопке номер 1».

Специфичными для объектно-ориентированного программирования является операторы:

ОБЪЕКТ.СВОЙСТВО=ЗНАЧЕНИЕ (например, Кнопка1.Enabled=True — Делает кнопку доступной пользователю);

ОБЪЕКТ.МЕТОД — выполняет какое-либо действие над объектом..

Практическое задание

1.Открыть свою книгу и войти в редактор Visual Basic. Вставить пользовательскую форму (окно) по команде Insert — UserForm. Вставка формы сопровождается появлением инструментальной панели Панель_элементов.

2.Свойству Caption Вашей формы присвоить значение «Секундомер».

Указание. Воспользоваться фреймом Properties редактора Visual Basic. Против слова Caption стереть старое значение «UserForm» и вписать новое «Сеундомер».

Нарисовать на форме с помощью панели элементов три кнопки (см.рис 10.). Присвоить свойству Name этих кнопок значения соответственно: Command1, Command2, Command3; а свойству Caption — значения «Старт», «Стоп», «Выход».

Указание. Выделить нужный объект (кнопку), затем в окне свойств внести соответствующие изменения.

Рис. 10.

3. Нарисовать 6 надписей, располагая их в два столбца. Надписям левого столбца присвоить значения свойства Caption соответственно — «Время старта:», «Время финиша:», «Длительность:». Значения этого свойства трех других надписей сделать пустыми.

Форма должна принять вид как на рисунке 11.

Рис. 11.

4.Свойству Enabled кнопки Command2 присвоить значение False. После этого кнопка принимает блеклый вид.

5.Двойным щелчком по кнопке «Выход» войти в область программного кода. В частную процедуру обработки события «Щелчок» для этой кнопки вписать оператор End.

6.Запустив программу, проверить работу этой кнопки.

7.Двойным щелчком по кнопке «Старт» войти в область ее программного кода и вписать следующий код.

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