29
Москва 2005

Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

Москва 2005

Page 2: Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ПУТЕЙ СООБЩЕНИЯ

_______________________(МИИТ)_______________________

Кафедра“САПР транспортных конструкций и сооружений”

Э. Р. РЕЗНИКОВА

Утвержденоредакционно-издательским

советом университета

ОСНОВЫ РАБОТЫ В РЕДАКТОРЕ VBA В СРЕДЕ MS OFFICE

Методические указания к лабораторным работам для студентов строительных специальностей

Москва 2005

Page 3: Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

УДК 658.512.22.011.56 Р34

Резникова Э.Р. Основы работы в редакторе VBA в среде MS Office: Методические указания к лабораторным работам по курсу “Информатика”. - М.: МИИТ, 2005. - 28 с.

Настоящие методические указания посвящены основам работы в интегрированной среде разработки приложений VBA (Visual Basic for Applications), встроенной в программы Microsoft Office. Рассматриваются вопросы создания, редактирования, отладки и выполнения VBA-проектов, состоящих из модулей и пользовательских форм (диалоговых окон).

Методические указания предназначены для студентов строительных специальностей, а также для пользователей MS Office, желающих освоить работу с проектами VBA.

© Московский государственный университет путей сообщения (МИИТ), 2005

Page 4: Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

ВВЕДЕНИЕ

Будущим инженерам XXI века необходимо не только быть грамотными пользователями компьютерных систем, но и уметь самостоятельно составлять и отлаживать программы. Для начала вполне достаточно освоить одну систему программирования, это позволит эффективно решать многие инженерные задачи.

Среда разработки приложений VBA (Visual Basic for Applications), встроенная в программы Microsoft Office, проста в изучении и позволяет быстро конструировать хорошие проекты. Технология визуального программирования (первое слово “visual”) дает возможность легко “рисовать” необходимые окна с кнопками, надписями и другими элементами. С каждым элементом окна легко связывается текст программы, где можно обработать любую информацию. При этом удобный редактор кода облегчает синтаксически правильный набор текста программы, а хороший отладчик помогает найти и исправить ошибки в работе программы.

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

Приступать к изучению работы в редакторе VBA можно после освоения хотя бы одного компонента Microsoft Office (Word, Excel, PowerPoint...) на уровне пользователя.

Page 5: Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

НАЧАЛО РАБОТЫ (ЗАПУСК РЕДАКТОРА VBA)

В любом приложении Microsoft Office (Word, Excel, PowerPoint, Access) можно создавать программы на языке Visual Basic, а точнее, разрабатывать проекты в специальной среде VBA. Чтобы попасть в эту специальную среду разработки проектов, надо сначала открыть существующий или создать новый документ в любом приложении MS Office, а затем нажать комбинацию клавиш Alt+Fll либо выбрать команду меню “Сервис”/”Макрос”/”Редактор Visual Basic”.

Например, в системе Excel создадим новую книгу Книга 1 и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

N

CD @ ГСЗ j(General)__i:_i_:_--------------------- -t VUAPfOJfcit (Кн-if о 1)

Й ~8в Microsoft Excel Objects... ® ЛИСТ1 (flHCTl)

4 / в Л » с т 2 ( Л и с т г )a ЛистЗ(ЛистЗ)€Ш№Ш

(Declarations) т-j

iTA

Рис. 1 Окно редактора VBA 51-заголовок окна, 2-строка меню, 3-панели инструментов,

4-окно проекта, 5-окно редактирования кода, 6-окно свойств

4

Page 6: Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

1. Заголовок окна с названием открытого документа ’’Microsoft Visual Basic - Книга1”.

2. Строка меню’’File Edit View Insert Format Debug Run Tools...” см. приложение 2.

3. Панели инструментов (для быстрого доступа к часто используемым командам меню):- стандартная- правка- отладкасм. приложение 1 и рис. 14.

4. Окно проекта “Project-VBAProject”для просмотра, добавления и удаления модулей и форм.

5. Окно редактирования кода “ Книга 1 - Эта книга (Code)”, здесь пишут и отлаживают тексты программ (процедур).

6. Окно свойств “Properties”,здесь просматривают и изменяют значения свойств различ­ных объектов (меняют их названия, цвета, настройки и т.п.).

Для временного переключения из редактора VBA обратно в приложение Office (Word, Excel и др.) можно использовать ту же комбинацию клавиш Alt+Fll, что и для входа в редактор VBA. Либо можно щелкнуть первую кнопку на стандартной панели инструментов VBA (там нарисован символ того приложения Office, с которым идет работа).

Для выхода из редактора VBA надо выполнить команду меню “Файл”/”3акрыть и вернуться в ...” Перед этим все сделанные в редакторе VBA изменения лучше сохранить по команде меню “Файл’’/’’Сохранить...”. Однако в дальнейшем, при обычном сохранении документа Office, весь VBA-проект также будет сохранен вместе с ним.

5

Page 7: Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

Одним из главных понятий во всех приложениях Microsoft Office является документ. Документы Office - это не просто и не только тексты, таблицы, рисунки или презентации. Документы Office - это объекты, объединяющие различные данные и программы для их обработки. Документами Office являются и документы Word, и рабочие книги Excel, и базы данных Access, и подшивки Binder, и презентации PowerPoint. В любом из этих документов могут быть и данные, и программы. Все создаваемые программные компоненты документа объединяются в одно целое, называемое проектом.

Итак, проект в MS Office - это набор программ (модулей) и Форм, связанных с основным документом. В модулях записывают тексты программ (процедур) на языке VBA. Формы (UserForm) - это диалоговые окна с различными элементами управления (кнопками, полями ввода, флажками, надписями и т.п.) и процедурами их обработки.

Проект является частью документа и не существует отдельно от него. Он хранится в одном файле вместе с документом. Для Word это файлы с расширением .doc, для Excel - .xls, для Access - .mdb, для PowerPoint - .ppt. В дальнейшем будем говорить в основном о рабочих книгах Excel и документах Word, т.к. основные правила работы в среде VBA для различных приложений Office одинаковы.

С каждым документом связан свой проект. Структура проекта показана в специальном окне проектов, которое открывается автоматически при вызове редактора VBA либо по команде меню “Вид’7”Окно проекта” (см. рис.2). При создании нового документа Word с именем Документ 1 автоматически создается и VBA-проект РпцесЕДокумент 1) с объектом ThisDocument (т.е. текущий открытый документ), а также специальные проекты Normal и TemplateProject.

ПРОЕКТЫ И МОДУЛИ

6

Page 8: Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

El-

Project (Документ!)Й 0 1 Microsoft Word Objects

f fH ThisDocument В Q References

M Template Project (EEFONTS)

Рис.2 Окно проекта VBA в Word При создании рабочей книги Excel с именем Книга 1

автоматически создается и VBA-проект VBAProject(KHHral) с четырьмя объектами Excel: вся рабочая книга (“Эта книга”) и три ее листа (“Лист1”, “Лист2”, “ЛистЗ”).

Project • VBAProject

В - Ц Microsoft Excel Objects Я ) Лист1 (Лист1)

Лист2 (Лист2) i jQ ЛистЗ (ЛистЗ)5 0 ЭтаКнига

Рис.З Окно проекта VBA в Excel С каждым объектом (например, Лист2 или ThisDocument)

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

листа книги, каждой формы UserForm и других объектов);- стандартные модули (добавляются в проект по команде

меню “Вставка”/”Модуль” либо при создании макросов).

7

Page 9: Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

ОКНО ПРОЕКТАОкно проекта обычно открывается автоматически при

вызове редактора VBA либо по команде меню “Вид”/”Окно проекта”, либо по нажатию кнопки “Окно проекта” на стандартной панели инструментов.

В окне проекте представлена структура модулей текущего проекта. Как правило, в окне проекта VBA для Excel мы видим три папки (“Microsoft Excel Objects”, “Forms” и “Modules”). В папке “Microsoft Excel Objects” перечислены все листы рабочей книги и сама книга (для каждого объекта существует модуль, где можно записывать тексты программ), в папке форм - все созданные UserForm (для каждой из них также существует свой модуль), а в папке модулей - все созданные стандартные модули с текстами программ или макросами. На рис.4 представлен пример проекта VBA для книги с именем TestVBA. В этом проекте существует 6 модулей: 5 модулей объектов (три - для листов книги, один для всей книги, один для формы DialogHello) и один стандартный модуль с именем Примеры.

Гг lv<v Microsoft Excel Objects I jp Лист1 (Лист1)

i...в Лист2 (Массив)I...i f } ЛистЗ (Таблица)•“•••50 ЭтаКнига

В - О FormsЦ DialogHello

ЁГ- Ш ModulesModule 1

Рис.4 Пример окна проекта VBA в Excel

8

Page 10: Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

Добавление и удаление компонентов проекта

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

Чтобы добавить в проект новый стандартный модуль. нужно выбрать команду меню “Вставка”/”Модуль” либо нажать кнопку “Вставка Модуль” на стандартной панели инструментов. Для удаления стандартного модуля из проекта надо выделить его имя в окне проекта и выбрать команду меню “Файл”/”Удалить...” (либо команду контекстного меню, вызываемого правой кнопкой мыши, “Удалить...”). Перед удалением модуля будет задан вопрос, надо ли его предварительно экспортировать (т.е. нужно ли сохранить его в отдельном файле с расширением .bas). При ответе “Нет” модуль будет окончательно удален. При ответе “Да” появится диалоговое окно экспорта файла, где можно задать папку и имя для файла с расширением .bas, где будут сохранены все программы этого модуля для дальнейшего использования в других проектах.

Чтобы добавить в проект новую форму (т.е. новое окно диалога), нужно выбрать команду меню “BcTaBKa”/”U serForm ” либо нажать кнопку “Вставка U serForm ” £§j на стандартной панели инструментов. Для удаления формы из проекта надо выделить ее имя в окне проекта и выбрать команду меню “Файл”/”Удалить...” (либо команду контекстного меню, вызываемого правой кнопкой мыши, “Удалить...”). Перед удалением формы будет задан вопрос, надо ли ее предварительно экспортировать. При ответе “Нет” форма и все относящиеся к ней программы (ее модуль) будут окончательно

9

Page 11: Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

удалены. При ответе “Да” появится диалоговое окно экспорта формы, где можно задать папку и имя для файла с расширением .frm, где будет сохранена вся информация по данной форме. В дальнейшем ее можно будет включить в другой проект с помощью команды меню “Файл”/”Импорт...”.

Вызов редактора кода

Для просмотра, создания и изменения текстов программ в различных модулях существует удобный редактор кода. Чтобы его вызвать, надо выбрать в окне проекта соответствующую строку (имя объекта, формы или модуля) и

- либо выполнить двойной щелчок кнопкой мыши,- либо нажать клавишу F7,- либо выбрать команду меню “Вид”/”Программа”,- либо щелкнуть мышью первую кнопку вверху окнапроекта (см. рис.5).

Откроется окно редактора кода для выбранного модуля.

кнопки вида для объекта Лист2:_- текст программы (код)- сам объект

Proved • </BAPro|ed

В Щ VBAProject (TestVBA.xls)-И Л Microsoft Excel Objects

О Лист! (Лист!)Лист2 (Массив)

Щ ] ЛистЗ (Таблица) Q ЭтаКнига

В • ® Forms! Ш DialogHello

В i l ModulesModule 1

Рис.5 Окно проекта с кнопками “программа” / ’’объект”10

Page 12: Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

СОЗДАНИЕ ФОРМ (ДИАЛОГОВЫХ ОКОН)

Первое слово в названии “Visual Basic for Applications” говорит о так называемом “визуальном” программировании, т.е. вначале определяется вид экранной формы (диалогового окна), затем задаются ее свойства и пишутся процедуры для обработки событий, связанных с этой формой (например, щелчок мыши на каком-либо ее элементе).

Новая форма создается по команде меню “BcTaBKa”/”UserForm” либо по нажатию кнопки |ЦЦ на стан­дартной панели инструментов. На экране появится пустая заготовка для формы и рядом - панель элементов (Toolbox) с различными элементами управления.

Рис.6 Заготовка формы (диалогового окна) и панель элементов

Размеры формы можно менять, перетаскивая мышью маркеры на ее границе. Кроме того, в окне свойств для новой формы (его можно вызвать из контекстного меню командой “Свойства” или кнопкой на стандартной панели

И

Page 13: Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

инструментов) можно изменить цвет формы, ее заголовок и т.п. Затем надо расположить на заготовке формы управляющие элементы. Они выбираются на панели элементов (если ее не видно, выберите команду меню “Вид”/”Панель элементов” или щелкните кнопку на стандартной панели инструментов). Чаще всего используют такие управляющие элементы:А - надпись (Label) ab! - поле ввода (TextBox)

Jpg I - поле ввода с раскрывающимся списком (ComboBox)Ш - список (ListBox)F - флажок, кнопка выбора (CheckBox)& - переключатель (OptionButton)

ifgfe - выключатель (ToggleButton) а - рамка (Frame)^ ; - командная кнопка (CommandButton)

Любой элемент можно “перетащить” мышью с панели элементов на заготовку формы. При отпускании кнопки мыши он займет указанное место, при этом вокруг элемента появится рамка с выделенными точками. “Перетаскиванием” рамки элемент можно перемещать, а “перетаскиванием” выделенных точек - менять его размеры. Элементы размещаются на форме с учетом сетки (ее узлы обозначены точками, см. рис.6), которая задается или отключается по меню “Сервис”/”Параметры” (вкладка “Общие”).

Каждому новому элементу автоматически присваивается имя, составленное из типа элемента и порядкового номера (см. рис.7). У каждого элемента есть целый список свойств: имя, размеры, цвет, шрифт, видимость и т.п. Все свойства можно просматривать и менять в окне свойств (см. рис.1, №6).

12

Page 14: Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

Достаточно щелкнуть мышью любой элемент формы, либо выбрать в раскрывающемся списке окна свойств его имя, либо выбрать из контекстного меню элемента команду “Свойства”.

Вычисление определенного интеграла

надпись . .Ш Ш Ш ЯШ Л поле ввода

Label 1 начала зтсмка : TextBoxl

надпись * поле вводаLabe]2 — конец отрезга | TextBox2

. ■ . иоле вводанадписьLabel3

на сколько частей разбить отрезок?} TextBox3

CommandButton 1 CommandButton2

Рис.7 Пример окна проектирования формы

Чтобы изменить текст, который пишется на командной кнопке или на другом элементе, надо изменить свойство “Caption”(заголовок) для соответствующего элемента. Таким образом, изменением свойств и перетаскиванием элементов добиваются нужного вида формы (окна диалога).

Все элементы управления можно копировать, вырезать и удалять обычным для Windows способом.

При двойном щелчке мышью по элементу управления открывается окно редактирования кода с заготовкой процедуры обработки события Click для этого элемента.

13

Page 15: Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

ОКНО РЕДАКТИРОВАНИЯ КОДАОкно редактора кода (текстов программ) представлено на

рис. 8. Возможны два режима представления кода: просмотр всего модуля (т.е. всех процедур и объявлений единым потоком строк) и просмотр каждой процедуры по отдельности. Переключение этих режимов просмотра выполняется нажатием одной из двух кнопок в нижнем левом углу окна.

раскрывающиеся списки объектов и событий

-WGeneral)

Sub Z3()||J Const pi As Single “

Dim r As Single, V A:3.141593 ! Single

r = InputBox("Радиус?”)V - pi * r ' 3 * 4 / 3HsgBox ("Объем шара = " £ Str(V))

End Sub

Sub 22 ()Dim a As Single, b As Single, c As Dim D As SingleDim xl As 3ingle, x2 As Single

ingle

a = InputBox("Первый коэффициент:", "Ввод коэфф.квадр.уравн.") b » InputBox ("Второй коэффициент:", "Ввод коэфф. квадр. уравн. ") с = InputBox("Третий коэффициент:", "Ввод коэфф.квадр.уравн.") D - b * b - 4 * a * c HsgBox ("D = " £ 3tr(D))If D >= 0 Then

xl - (-b + Sqr(D)) / 2 / a: x2 * (-b - Sqr(D)) / (2 * a) a = HsgBox("Корни уравнения: " £ Chr$(13) £ _Stt(xl) £ ChrS(13) £ 3tr(x2), 0 + 64, "z2")

Elsea » HsgBox("Действит. корней нет”, 0 + 16, ”Z2")

End If End Sub

кнопки переключения режимов просмотра

Рис.8 Окно редактора кода в режиме просмотра всего модуля

14

Page 16: Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

В режиме просмотра отдельной процедуры в окне выводится текст только одной процедуры, при этом переход к другой процедуре делается с помощью раскрывающихся списков вверху окна (либо по клавишам PageUp, PageDown можно выбирать предыдущую или следующую процедуру).

У редактора кода есть очень удобная способность автоматически завершать написание некоторых конструкций языка VBA. Когда пользователь начинает набирать ключевое слово, например, Integer, то уже со второй буквы появляется вспомогательное окно со списком подходящих слов. Нажатие клавиши Tab или двойной щелчок кнопкой мыши на выбранном элементе списка вписывает его в текст программы (см. рис.9).

(General)

In teger

Sub T e s t ()Dim k a s in|

End Sub ШГ|Ш Interior i l l IPictureDisp

Label! ® LanguageSettings j ® LeaderLines j ® Legend__________

Ш Ш '

Рис.9 Окно редактора кода со списком-помощником

Такой список-помощник можно вызвать принудительно нажатием клавиш Ctrl+J.

15

Page 17: Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

У редактора кода есть еще одна очень удобная способность - выводить на экран подробное описание функций после набора их имени (такую подсказку можно вызвать и принудительно, нажав Ctrl+I). На рис Л 0 приведен пример подсказки по функции InputBox со всеми параметрами, причем необязательные записаны в квадратных скобках.

(General) 3 [Test

Sub Te3 t ( )Dim k As I n te g e r

k = In p u tB o x (End inpuffiox(Prwnpf; [Title], [D efau lt, fm>s], [УВоз],

[H e lp file ], [C o n te x t As String ______ _______

4

РисЛО Всплывающая подсказка по функции InputBox После нажатия Enter автоматически проверяется

синтаксис строки. Если ошибок нет, то курсор начнет мигать в следующей строке. При синтаксической ошибке (например, забыта скобка или перепутаны буквы) строка выделяется красным цветом и поясняется возможная ошибка (см. рис Л1).

(General) 3 Test 3Sub T e s t о

Dim k As I n te g e r k = In p u tB o x ( "k-?"

Л,К Microsoft Visual Basic

A Cgmpile error* '

Expected list separator or)

End Sub OK :I £npaexa J .JEW Я Ш МРис. 11 Синтаксическая ошибка (забыта круглая скобка)

16

Page 18: Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

И, наконец, еще одна полезная способность редактора кода. Если поставить курсор на ключевое слово VBA и нажать F1, то на экране появится окно с подробной справочной информацией об этом слове с примерами использования его в программах. t ^

Настройка редактора кода

Работа редактора кода настраивается несколькими параметрами, значения которых можно просмотреть и исправить в диалоге по команде меню “Сервис”/”Параметры”, вкладка “Редактор”. На этой вкладке желательно установить следующие переключатели:- проверка синтаксиса

обеспечивает автоматическую проверку после ввода очеред­ной строки программы;

- явное описание переменныхустанавливает необходимость явного описания типов пере­менных в модулях;ОЧЕНЬ ВАЖНЫЙ СОВЕТ. Не забудьте включить этот пара­метр, он не только воспитывает хороший стиль написания программ, но и позволяет избежать очень многих досадных ошибок, которые трудно найти (например, в одной строке пишем переменную Sum, а затем случайно записываем Summ).

- список компонентовавтоматически выводить список-помощник с подходящими словами (иначе придется нажимать Ctrl+J);

- краткие сведенияавтоматически выводить всплывающую подсказку по функции после ввода ее имени (иначе придется нажимать Ctrl+I);

17

Page 19: Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

- подсказки значений данныхв режиме отладки показывать значение переменной, указанной курсором;

- просмотр всего модуляустановить режим просмотра всего модуля (т.е. всех процедур подряд) для вновь открываемых модулей;

- разделитель процедурпоказывать разделительную линию между процедурами в режиме просмотра всего модуля (на рис.8 видны две процедуры Z3 и Z2, разделенные чертой);

СОЗДАНИЕ ОБЫЧНЫХ ПРОЦЕДУР И ПРОЦЕДУР ОБРАБОТКИ СОБЫТИЙ

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

Есть процедуры, задаваемые ключевым словом Sub, и процедуры-функции, которые начинаются с ключевого слова Function. Функция отличается от процедуры Sub только тем, что возвращает одно конкретное значение (и, соответственно, функцию можно вызвать прямо из ячейки рабочего листа Excel).

В одном модуле может быть любое количество процедур и функций.

Обычные процедуры (подпрограммы) в стандартном модуле создают так:1) открыть стандартный модуль из окна проекта (двойной

щелчок мыши либо F7) или создать новый модуль по команде меню “Вставка”/”Модуль”;

18

Page 20: Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

2) в редакторе кода набрать Sub (либо Function) и название, например, Sub Lab3, затем нажать Enter;

3) автоматически добавятся круглые скобки и строка End Sub(либо End Function);

4) набрать текст процедуры между ее заголовком изавершающей строкой End...

Есть другой способ: после открытия модуля можно выбрать команду меню “Вставка”/”Процедура...” (или щелкнуть кнопку \ на стандартной панели инструментов) и указать в диалоговом окне имя и тип создаваемой процедуры.

Кроме обычных процедур, в VBA часто используются процедуры обработки событий. Для всех объектов из проекта VBA (документ Word, лист Excel, окно диалога или созданные командные кнопки, списки и т.п.) определены события. Например, для документа Word возможны 3 события:

New (создание нового документа),Open (открытие существующего документа)Close (закрытие документа).

Возможные события для командной кнопки (в окне диалога): Click (щелчок мыши),DblClick (двойной щелчок мыши), и другие.Программы, которые автоматически вызываются при

наступлении соответствующих событий, называются процедурами обработки событий. Имена таких процедур состоят из имени объекта, знака подчеркивания и названия события. Например,

Document Open - имя процедуры, которая автоматически вызывается при открытии документа Word;

CommandButton2_Click - имя процедуры, которая авто­матически вызывается при щелчке мыши на командной кнопке с именем CommandButton2.

19

Page 21: Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

При создании проекта и затем при добавлении каждого объекта автоматически создаются “заготовки” для всех процедур обработки всех возможных событий. Такие “заготовки” состоят просто из заголовка процедуры и закрывающего ее оператора End Sub.

Например, процедуры для трех возможных событий документа Word вначале выглядят так:

Рис. 12 Окно редактора кода для модуля ThisDocumentМногие процедуры обработки событий остаются

пустыми. Но при решении конкретных задач в некоторые процедуры нужно вписывать текст программы. Для этого из левого раскрывающегося списка выбирают имя нужного объекта, а из правого списка - событие. В окне высвечивается заготовка, которую дополняют необходимыми действиями:Sub Document OpenQ

ВеерMsgBox ("Привет! Удачной работы!")

End SubТеперь каждый раз при открытии этого документа будет звучать сигнал и высветится окошко с приветствием.20

Page 22: Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

ВЫПОЛНЕНИЕ ПРОЦЕДУР И ФОРМ

Чтобы запустить на выполнение обычную процедуру (подпрограмму), нужно поставить курсор в любой строке этой процедуры и нажать F5 либо щелкнуть кнопку на стан­дартной панели инструментов, либо выбрать команду меню “3апуск”/”3апуск подпрограммы/UserForm”. Аналогично запускают на выполнение форму (окно диалога).

Если нужно автоматически запускать процедуру при загрузке документа, то достаточно записать ее вызов в процедуре обработке события Open для данного документа. Например, чтобы при открытии книги Excel сразу начинала работать программа Rabotal, надо:- открыть модуль объекта “Эта книга” (двойной щелчок в окне

проекта);- открыть процедуру обработки события Open (в левом списке

выбираем объект WorkBook, в правом списке - событие Open);

-записать в этой процедуре вызов нужной программы:Sub Workbook_Open()

Call Rabotal End Sub

Чтобы при загрузке книги Excel автоматически начинала работать форма (окно диалога, UserForm) с именем, например, DialogHello, процедура обработке события Open должна быть такой:

Sub Workbook_Open()DialogHello.Show

End Sub

21

Page 23: Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

ОТЛАДКА ПРОГРАММОтладкой называют поиск ошибок в программе

(тестирование) и их исправление. Здесь речь идет не о синтаксических ошибках (например, перепутали запятую и точку), которые обнаруживаются автоматически при вводе очередной строки. Если программа не “зависает” и дает ответ, это вовсе не означает, что она отлажена и работает правильно. Главное - проверить логику программы, т.е. верно ли реализован алгоритм, правилен ли порядок выполнения действий и правильные ли ответы дает программа при различных исходных данных. Почти всегда, за редкими исключениями, в первых вариантах программыобнаруживаются ошибки, которые необходимо исправить. Для этого в редакторе VBA есть много удобных средств отладки, которые позволяют проследить ход программы “по шагам”, остановить ее в любой точке, проверить значения переменных и т.п.

Часто используемые средства отладки1. Прервать работающую программу в любой момент можно

нажатием пары клавиш Ctrl+Break, тогда появится диалоговое окно с кнопками “Продолжить”, "Завершить” и "Отладка”. При выборе кнопки "Отладка” откроется окно с текстом программы, где будет выделен оператор, на котором прервалось выполнение программы.

2. Поставить в строке программы точку останова, где выполнение программы будет прервано с переходом в режим отладки - F9 (либо меню “Отладка”/”Точка останова”). Отменить точку останова можно той же клавишей F9.

3. Посмотреть значение любой переменной можно так:а) подвести указатель мыши к имени переменной и подождать пару секунд, появится прямоугольник с ее значением (см. рис. 13)

22

Page 24: Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

Sub f o r i ()Dim f As D o u b le , n = In p u tB o x (" n -f = 1For rn = 2 To n

N ext rn* иrn = 2

HsgBox ("n!= " 6

n As I n t e g e r , m Аз I n te g e r "n!")

S tr ( f ))End Sub

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

б) выполнить команду меню “Вид”/”Окно локальных переменных”, появится специальное окно со значениями и типами всех описанных в процедуре переменных;в) выделить имя переменной или целое выражение в тексте программы и нажать Shift+F9 (или выбрать команду меню “Отладка”/”Контрольное значение...”), появится окно с текущим значением выделенного объекта.

4.Пошаговое выполнение программы:F8 (шаг с заходом) - выполнить один очередной оператор, причем если это вызов процедуры, то войти в нее,Shift+F8 (шаг с обходом) - выполнить один очередной оператор без захода в вызываемую процедуру.

Удобно пользоваться панелью инструментов “Отладка” (включается по команде меню “Вид”/”Панели инструментов”).

▼ Debug В

М ' ► .: ■ #! С! * 1 1 П р Ш <№1 2 3 4 5

Рис Л 4 Панель инструментов “Отладка”1 -точка останова, 2-шаг с заходом, 3-шаг с обходом,

4-окно локальных переменных, 5-контрольное значение

23

Page 25: Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

ПРИЛОЖЕНИЕ 1.КНОПКИ ПАНЕЛЕЙ ИНСТРУМЕНТОВ

“СТАНДАРТНАЯ” И “ПРАВКА”

1 2 3 4 5 6 7 8 9 10 11 12 13 14 151 - переключение из редактора VBA в Word2 - вставка UserForm3 - сохранить весь документ4 - вырезать выделенный фрагмент5 - копировать выделенный фрагмент6 - вставить фрагмент из буфера обмена7 - отменить последнее действие8 - повторить последнее действие9 - запуск подпрограммы/UserForm1 0 - прервать выполнение подпрограммы/UserForm11 - сброс выполнения (остановка) подпрограммы12 - режим конструирования UserForm13 - окно проекта 14-ок н о свойств15 - панель элементов управления

» йо. % * > * 9 ® -z з И л1 2 ’ 3 4 5 6 7 8 9

1 - список свойств/методов (вспомогательный список ключевых слов)2 - сведения (вызов всплывающей подсказки по формату функций)3 - завершить слово (при наборе текста программы)4,5 - сдвиг выделенного фрагмента текста на интервал табуляции6 - включение/отключение точки останова для отладки программы7 - пометить выделенный фрагмент как комментарий (неисполняемый)8 - снять знаки комментария с выделенного фрагмента9 - поставить/снять закладку в текущей строке программы

24

Page 26: Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

ПРИЛОЖЕНИЕ 2.ОСНОВНЫЕ КОМАНДЫ МЕНЮ

В РУССКОЙ И АНГЛИЙСКОЙ ВЕРСИЯХ

Файл..............................................Сохранить ...............................Импорт файла.........................Экспорт файла........................Закрыть и вернуться в.............

........................................ File

............................ Import File.............................Export File...........Close and Return to ...

Правка..........................................Отменить.................................Список свойств/методов........Сведения .................................Завершить слово.....................

.........List Properties/Methods

..............................Quick Info.....................Complete Word

Вид.................................................Программа...............................Объект......................................Окно проекта...........................Окно свойств...........................Панели инструментов.............

Отладка..................Правка....................Стандарт.................UserForm................

...............Properties Window

................................Toolbars........................Debug............................Edit.................... Standard.................UserForm

Вставка................................................................................ InsertПроцедура........................................... ProcedureUserForm..................................................................UserFormМодуль........................................................................ Module

25

Page 27: Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

Формат..............................................................................FormatОтладка...............................................................................Debug

Шаг с заходом.......................................................... Step IntoШаг с обходом........................................................ Step OverВыполнить до текущей позиции......................Go to CursorКонтрольное значение.................................. Quick Watch...Точка останова........................................ Toggle Breakpoint

Запуск..................................................................................... RunЗапуск подпрограммы/UserForm...........Run Sub/UserFormПрервать......................................................................... BreakСброс................................................................................ResetКонструктор...................................................... Design Mode

Сервис.................................................................................. ToolsПараметры............................................................... Options...

Окно................................. Window

ЛИТЕРАТУРА

1. Гетц К., Джилберт М. Программирование в Microsoft Office. Полное руководство по VBA: Учебное пособие: Пер. с англ- Киев:ВНУ, 1999.-765с.

2. Биллиг В.А., Дехтярь М.И. VBA и Office97. Офисное программирование. - М.: Издательский отдел “Русская Редакция” ТОО “Channel Trading Ltd.”, 1998.-720с.

3. Демидова Л.А., Пылькин А.Н. Программирование в среде Visual Basic for Applications: Практикум. - М.:Торячая линия - Телеком, 2004.-175с.

26

Page 28: Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

СОДЕРЖАНИЕ

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

Начало работы (запуск редактора VBA).................................... 4

Проекты и модули..........................................................................6

Окно проекта..................................................................................8

Создание форм (диалоговых окон)............................................11

Окно редактирования кода..........................................................14

Создание обычных процедур и процедур обработки событий. 18

Выполнение процедур и форм................................................... 21

Отладка программ....................................................................... 22

Приложение 1. Кнопки панелей инструментов

“стандартная” и “правка” ........................................................... 24

Приложение 2. Основные команды меню

в русской и английской версиях................................................ 25

Литература................................................................................... 26

27

Page 29: Москва 2005 - library.miit.rulibrary.miit.ru/methodics/22_08_2012/04-35091.pdf · и нажмем Alt+Fl 1 .На экране мы увидим такую картинку:

Учебно-методическое издание

Эмма Романовна РезниковаОСНОВЫ РАБОТЫ В РЕДАКТОРЕ VBA

В СРЕДЕ MS OFFICEМетодические указания к лабораторным работам

Подписано к печати -0&.06.05, Формат 60x90!/j6 Тираж*200,

Усл.-печ.л.1,75

Изд. № 59 - 05, Заказ № 390,

Типография МИИТ, 127994, Москва, ул. Образцова, 15