Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

177

.pdf
Скачиваний:
1
Добавлен:
13.11.2022
Размер:
281.98 Кб
Скачать

11

2. Private – процедура будет доступна для других процедур только данного модуля.

После ввода всех необходимых параметров в диалоговое окно Add Procedure необходимо нажать кнопку OK. В окне программного кода

появятся:

а) заголовок процедуры, включающий ключевые слова Public или

Private, ключевое слово, определяющее тип создаваемой процедуры (Sub

или Function), имя процедуры и круглые скобки, между которыми могут быть введены аргументы процедуры;

б) оператор, завершающий процедуру (End Sub или End Function).

Процесс создания процедуры завершается вводом между заголовком процедуры и заканчивающим её оператором программного кода, с помо-

щью которого решается поставленная перед Вами прикладная задача.

Создайте в первом модуле процедуру следующего содержания

(текст сообщения в кавычках может быть произвольным):

Public Sub Приветствие ( )

MsgBox ("Здравствуйте!")

End Sub

Процедура Приветствие является автономной программой, выполняе-

мой независимо от других процедур. Передача данных между процедурами не предусматривается, поэтому список аргументов в круглых скобках от-

сутствует. В результате выполнения процедуры на экран будет выводиться диалоговое окно с текстовым сообщением, указанным в кавычках (для это-

го используется простейший вариант строковой функции MsgBox).

Изменение уровня безопасности

Иногда Ваша процедура, составленная на языке VBA, не будет запус-

каться. Одной из причин этого может быть высокий уровень защиты от макровирусов, установленный в MS Excel. Так как макровирусы представ-

12

ляют собой программный код, хранящийся непосредственно в файле до-

кумента, MS Excel полагает, что Ваша программа является вирусом.

Для понижения уровня безопасности необходимо реализовать следую-

щие действия:

а) на вкладке Разработчик нажать кнопку Безопасность макросов;

б) в диалоговом окне Центр управления безопасностью на вкладке

Параметры макросов установить переключатель в положение Отклю-

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

в) нажать кнопку OK;

г) закрыть рабочую книгу MS Excel и вновь открыть её.

При открытии Вашего файла на экран будет выведено диалоговое окно

Извещение системы безопасности Microsoft Office Excel, в котором для возможности запуска созданных Вами VBA-процедур следует нажать кнопку Включить макросы.

Выполнение программы

Выполнить программу можно несколькими способами.

Способ 1. С помощью диалогового окна Макрос:

а) в окне открытой рабочей книги MS Excel на вкладке Разработчик

нажимаем кнопку Макросы;

б) в появившемся диалоговом окне Макрос выбираем имя нужной процедуры и нажимаем кнопку Выполнить.

Выполните процедуру Приветствие с помощью рассмотрен-

ного способа.

Способ 2. Запуск программы непосредственно из окна редактора

В окне программного кода необходимо установить курсор в любом месте текста нужной процедуры (это легко сделать с помощью открываю-

щегося списка имен имеющихся процедур в правом верхнем углу окна программного кода). Далее возможны следующие варианты выполняемых действий:

13

а) нажимаем кнопку Run Sub/UserForm на стандартной панели инструментов;

б) выполняем команды меню Run → Run Sub/UserForm;

в) нажимаем клавишу <F5>.

Выполните процедуру Приветствие с помощью рассмотрен-

ного способа.

Способ 3. С помощью командной кнопки на рабочем листе:

а) в окне открытой рабочей книги MS Excel нажимаем кнопку Вста-

вить на вкладке Разработчик;

б) после нажатия инструмента Кнопка в группе Элементы управле-

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

листе и определяем её размеры;

в) в появившемся диалоговом окне Назначить макрос объекту вы-

бираем имя процедуры, для запуска которой создаётся командная кнопка

(если Вы не сделаете этого, реализовать данное действие можно в даль-

нейшем, выполнив команду Назначить макрос… в контекстном меню,

вызванном для этой кнопки);

г) нажимаем кнопку OK.

При необходимости на кнопке может быть создана надпись, поясняю-

щая назначение кнопки (по умолчанию формируется надпись Кнопка N,

где N – порядковый номер кнопки). Для этого в любой момент времени следует установить указатель мыши на кнопке, вызвать контекстное меню и выбрать в нем команду Изменить текст.

Создайте на рабочем листе командную кнопку для запуска процедуры Приветствие. Запустите процедуру с её помощью.

Организация ввода исходных данных в программу и вывода полученных результатов

Составим программу для расчёта показателей доходности облигаций.

Вычисления выполняются по следующим формулам:

14

Курс облигации: K =

P

×100 , где

P

– рыночная цена облигации; N

 

 

N

 

 

 

 

 

 

номинальная цена облигации.

 

 

 

 

 

 

Текущая доходность облигации: t =

g

×100 , где g

норма годового до-

 

 

 

 

 

K

 

хода (купонная ставка процента).

 

 

 

 

 

 

Полная доходность облигации:

i = (1 +

t

) f -1, где

f – количество вы-

 

 

 

 

 

 

 

f

 

плат процентов в году.

Предварительно создадим процедуру для расчёта курса облигаций.

Процедура представляет собой автономную программу, передача значений аргументов между процедурами не планируется, следовательно, список ар-

гументов в круглых скобках отсутствует:

Public Sub Расчёт_курса_облигаций ( )

Dim P As Integer, N As Integer, K As Single

P = InputBox("Введите рыночную цену облигации")

N = InputBox("Введите номинальную цену облигации")

K = P / N * 100

MsgBox ("Курс облигаций равен")

MsgBox K

End Sub

В первой строке текста процедуры с помощью оператора Dim объяв-

ляются все переменные, используемые в программе. Переменные P и N

целого типа, переменная K – вещественного типа (например, 3,5).

Во второй и третьей строках текста процедуры с помощью строковой функции InputBox организуется ввод исходных значений переменных P и

Nв соответствующих диалоговых окнах.

Вчетвёртой строке выполняется расчёт искомой величины курса облигаций.

Впятой строке с помощью строковой функции MsgBox обеспечивается вывод на экран текстового информационного сообщения.

15

В шестой строке функция MsgBox выводит на экран рассчитанное зна-

чение курса облигаций.

Создайте во втором модуле (имя которого соответствует на-

званию Вашей группы) процедуру Расчёт_курса_облигаций.

Для быстрого ввода типов данных Integer и Single можно воспользоваться открывающимся списком ключевых слов

VBA. Запустите созданную процедуру при значениях P = 45, N = 50.

Модифицируем созданную процедуру.

Функция InputBox позволяет вводить кроме текстового сообщения,

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

чёт_курса_облигаций может иметь вид:

P = InputBox("Введите рыночную цену облигации", "ХГАЭП", 0)

Внесите соответствующие изменения в процедуру и запустите

её. Проанализируйте, как изменился вид диалогового окна.

Число, полученное в результате выполнения процедуры, и поясняющее его информационное сообщение выводятся в разных окнах. Для вывода их в одном окне можно воспользоваться оператором конкатенации &, позво-

ляющим выполнять слияние (объединение) текстовых значений.

Вместо двух строк программы, содержащих строковую функцию

MsgBox, можно записать одну:

MsgBox ("Курс облигаций равен" & K)

Внесите исправления в текст процедуры и запустите её. Об-

ратите внимание, что текст информационного сообщения и

16

число выводятся слитно. Что необходимо сделать, чтобы они разделялись пробелом? Внесите изменения и вновь запустите процедуру.

На основе процедуры Расчёт_курса_облигаций создайте во втором модуле (имя которого соответствует названию Вашей группы) процедуру Расчёт_показателей_доходности_облига-

ций. Для этого скопируйте первую процедуру полностью, за-

тем отредактируйте её:

измените название процедуры;

объявите новые переменные;

предусмотрите ввод дополнительных исходных данных;

введите арифметические операторы в соответствии с расчётными формулами, приводимыми ранее (опера-

ция возведения в степень обозначается в программном коде в виде надчерка ^).

Для запуска процедуры создайте командную кнопку на рабо-

чем листе MS Excel, предусмотрите вывод всех результатов в одном диалоговом окне.

Запустите процедуру Расчёт_показателей_доходности_обли-

гаций при конкретных значениях исходных параметров: ры-

ночная цена облигации равна 45; номинальная цена облига-

ции – 50; норма годового дохода – 0,045; количество выплат процентов в год – 4). Имейте в виду, что при вводе в поля диалоговых окон чисел, имеющих целую и дробную части, в

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

Проверьте правильность полученных результатов: курс об-

лигации равен 90; текущая доходность облигации – 0,05;

полная доходность облигации – 0,050945.

Если у Вас возникли проблемы при вводе текста процедуры или её вы-

полнении, обратитесь к разделам "Основные правила ввода программного кода" и "Выполнение программы" методических указаний.

17

Значение полной доходности облигации может быть выведено в виде: 5,0945Е-02. Данная запись означает, что число выводится в экспоненци-

альном формате, где 5,0945 – мантисса числа, -02 – порядок числа, т.е. по-

казатель степени числа 10, на которое нужно умножить мантиссу. Следо-

вательно, указанное число можно записать в виде: 5,0945·10-2, т.е. 0,050945.

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

зировать результаты вычислений в данном виде довольно сложно. Для вы-

вода информации в одном диалоговом окне, но в нескольких строках,

можно воспользоваться функцией Chr. Эта функция с аргументом, равным

13, позволяет организовать дальнейший вывод с начала следующей строки.

Следовательно, вывод результатов, полученных в процедуре Рас-

чёт_показателей_доходности_облигаций, можно выполнить, например,

в виде:

MsgBox ("Курс облигаций равен " & K & Chr(13) _

&"Текущая доходность облигации " & T & Chr(13) _

&"Полная доходность облигации " & I)

Внесите изменения в процедуру Расчёт_показателей_доход-

ности_облигаций в соответствии с представленным образ-

цом. Запустите процедуру и проанализируйте, какие измене-

ния произошли при выводе на экран полученных результатов.

Если в процедуре используется большое количество исходных данных,

нерационально вводить их каждый раз в диалоговых окнах с клавиатуры

(эта проблема особенно актуальна при многократном запуске программы при её тестировании и отладке). В рассматриваемой ситуации рекоменду-

ется предварительно ввести исходные данные в ячейки рабочего листа MS Excel и предусмотреть их чтение при выполнении процедуры. Это можно сделать, например, с помощью свойства Cells, которое может быть записа-

но в виде:

18

Cells (номер строки, номер столбца),

где номера строки и столбца могут быть числовыми константами, пере-

менными, выражениями. Обратите внимание, что адрес конкретной ячейки характеризует не имя столбца, к чему Вы уже привыкли, а его номер, при-

чём вначале указывается номер строки, а затем номер столбца.

Введите исходную информацию для расчётов на рабочий

лист MS Excel по следующему образцу (рисунок 4):

Рисунок 4 – Исходная информация для расчётов, введенная на рабочий лист MS Excel

Строки текста процедуры, с помощью которых вводятся значения ры-

ночной и номинальной цены облигаций, будут выглядеть следующим образом:

P = Cells ( 5 , 3)

N = Cells ( 6 , 3)

Внесите указанные изменения в текст процедуры Рас-

чёт_показателей_доходности_облигаций. Самостоятельно предусмотрите ввод нормы годового дохода и количества выплат процентов в году с рабочего листа MS Excel (рисунок

4). Запустите процедуру и убедитесь, что результаты расчётов не изменились.

19

Свойство Cells можно применять также для вывода полученных ре-

зультатов в ячейки рабочего листа MS Excel:

Cells ( 1, 2 ) = "Курс облигаций"

Cells ( 1, 3 ) = К

Первый оператор выводит в ячейку с адресом B1 текст Курс облига-

ций, второй – в ячейку с адресом C1 значение переменной K.

Отредактируйте текст процедуры Расчёт_показателей_доход-

ности_облигаций так, чтобы результаты расчётов и пояс-

няющие их надписи выводились на рабочий лист MS Excel

аналогично заданному образцу (рисунок 5):

Рисунок 5 – Результаты расчётов, выведенные на рабочий лист MS Excel

Имейте в виду, что, если исходные данные вводятся из ячеек рабочего листа MS Excel и все результаты расчётов также выводятся в ячейки рабо-

чего листа, изменения на экране монитора при запуске процедуры из ре-

дактора Visual Basic можно не увидеть. Для просмотра полученных ре-

зультатов следует перейти в окно рабочей книги MS Excel одним из рас-

смотренных ранее способов. Так как выполнять эту операцию часто нера-

ционально, рекомендуется выводить на экран одновременно окна рабочей книги MS Excel и редактора Visual Basic.

Запустите отредактированную процедуру Расчёт_показа-

телей_доходности_облигаций и убедитесь, что результаты расчётов не изменились. Сохраните результаты Вашей рабо-

ты. Покажите их преподавателю.

20

Библиографический список

1. Гарбер Г. З. Основы программирования на Visual Basic и VBA в Excel 2007 / Г. З. Гарбер. – М. : Солон-Пресс, 2008. – 192 с.

2. Начала программирования на VBA в Excel / сост. О. С. Комова,

С. В. Коломийцева. – Хабаровск : Издательство ДВГУПС, 2008. – 23 с.

3. Разработка пользовательских форм на языке программирования

VBA в среде MS Excel : методические указания / сост. Ю. В. Любицкий. –

Хабаровск : РИЦ ХГАЭП, 2008. – 24 с.

4. Любицкий Ю. В. Решение экономических задач на языке програм-

мирования VBA в среде MS Excel : учеб. пособие / Ю. В. Любицкий. – Ха-

баровск : РИЦ ХГАЭП, 2009. – 72 с.

5.Слепцова Л. Д. Программирование на VBA в Microsoft Office 2010 / Л. Д. Слепцова. – М. : Вильямс, 2010. – 432 с.

6.Уокенбах Дж. Microsoft Excel 2010. Профессиональное програм-

мирование на VBA : пер. с англ. / Дж. Уокенбах. – М. : Диалектика, 2011. – 815 с.

Содержание

 

Введение...............................................................................................................

3

Общие сведения о структуре построения программ.......................................

3

Основные правила ввода программного кода..................................................

5

Запуск редактора Visual Basic и завершение работы с ним............................

6

Создание программы...........................................................................................

9

Изменение уровня безопасности .....................................................................

11

Выполнение программы...................................................................................

12

Организация ввода исходных данных в программу и вывода полученных

 

результатов.........................................................................................................

13

Библиографический список..............................................................................

20

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