Основы объектно-ориентированного программирования (на примере VBA в MS Excel)

 

Министерство науки и образования Республики Казахстан

РГКП «Костанайский государственный университет им. А. Байтурсынова»

Институт экономики и финансов

Кафедра «Экономическая кибернетика»











МЕТОДИЧЕСКИЕ УКАЗАНИЯ

по изучению основ объектно-ориентированного программирования

(на примере VBA в MS Excel)













Костанай 2005

ББК 32.973.26

М 54

Методические указания утверждены на

заседании кафедры «Экономическая

кибернетика» РГКП «Костанайский

государственный университет

им. А. Байтурсынова»

Протокол № 13

от 13.06.2005 г.

Методические указания утверждены на

заседании методической комиссии Института экономики и финансов

Протокол №______1________________

от__20.09.05___________________

Составители:

Кужукеева Кенжегуль Мурзатаевна, ст. преподаватель кафедры «Экономическая кибернетика»

Мукашева Альмира Айкадаровна, преподаватель кафедры «Экономическая кибернетика»

Первухина Светлана Геннадиевна, преподаватель кафедры «Экономическая кибернетика»

Нурпеисова Жанар Сембаевна, преподаватель кафедры «Экономическая кибернетика»

Рецензенты:

Калжанов М.У., зав. кафедрой «Информационные системы»

ИМиКТ КГУ им. А.Байтурсынова,

к.ф.-м.н., доцент

Олейников А.А., ст. преподаватель кафедры СЭД

КФ ГОУВПО «Челябинский государственный университет»,

кандидат педагогических наук

Методические указания по изучению основ объектно-ориентированного программирования (на примере VBA в MS Еxcel) [Текст]. / Сост. К.М. Кужукеева, А.А. Мукашева, С.Г. Первухина, Ж.С. Нурпеисова.- Костанай, 2005.

Методические указания содержат материал для практического изучения объектно-ориентированного программирования на языке VBA в MS Еxcel, алгоритмов типовых задач с использованием характерных приемов программирования, включают описание основных операторов, приемы их применения и задачи.

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

Введение


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

Поскольку VBA является визуальной системой, пользователь может создавать видимую часть приложения, которое является основой интерфейса «программа-пользователь». С его помощью осуществляется взаимодействие пользователя с программой. Программный интерфейс разрабатывается на принципах объектно-ориентированного подхода, реализованного в VBA применительно к приложениям, выполняемым под управлением Windows.

Основная цель методических указаний:

овладение одним из наиболее распространенных объектно-ориентированных языков программирования;

изучение и освоение основных методов и приемов объектно-ориентированного программирования;

овладение практическими навыками: решения экономических задач на объектно-ориентированном языке; отладки программ.

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

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

Лабораторная работа № 1

Тема: Введение в VBA


Цель: изучить основные понятия объектно-ориентированного программирования на примере записи макроса в VBA в Excel

Задачи: - научить работе с макросами: создание, запуск, удаление, редактирование;

научить назначать макросы различным объектам.

Основные понятияBasic for Application (VBA) является общей языковой платформой для всех приложений (Excel, Word, Mail, Power Point). Он позволяет создавать приложения с интерфейсом профессионального уровня под Windows в короткий срок. VBA соблюдает основной синтаксис и правила программирования языков-диалектов Basic. Basic for Application (VBA) - развитая система визуального программирования для создания прикладных программ в среде Microsoft Office.- отличное средство автоматизации не только простых рутинных операций, которые пользователю приходится периодически выполнять, например, при подготовке текстов в Word или расчётов в Excel, но и сложнейших вычислений над большими объёмами данных.

Очень важным фактором, обуславливающим целесообразность наличия у специалиста любого профиля хотя бы минимальных знаний о VBA, является то, что в настоящее время VBA становится стандартом «де-факто» в качестве встроенного языка программирования не только приложений, поставляемых компанией Microsoft.

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

Язык Visual Basic for Applications является одной из версий популярного языка разработки приложений Visual Basic. В чём же отличия двух языков?

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

Для выполнения разработанной программы созданной в Visual Basic, пользователю не обязательно иметь доступ к самой среде программирования, т.к. разработанные приложения можно скомпилировать в.EXE файлы. VBA - приложения могут выполняться только в том приложении, в котором они были созданы

Общими для VBA и VB являются:

Язык программирования (во всех аспектах - типы данных, правила объявления и использования переменных, процедур и функций)

Во многом похожие средства разработки и отладки программ

Аналогичные модели объектно-ориентированного и событийно-управляемого программирования

Общие библиотеки объектов, механизмы подключения и использования библиотек

Знакомство с одним из языков программирования создаёт основу для успешного изучения другого языка, то есть если вы знакомы с Visual Basic, то легко будете программировать на VBA, верно и обратное утверждение. Даже если Вы начинающий программист, то будете чувствовать себя уверенно в знакомой среде, поскольку Вам будут знакомы и система меню, и панели инструментов, и вообще рабочие книги Excel. Кроме того, пользователь имеет доступ к огромной библиотеке функций Excel.

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

Автоматизировать повторяющиеся действия

Настроить интерфейс Excel с помощью модификации существующих или создания новых панелей инструментов, меню и пользовательских форм

Вносить дополнительную функциональность в среду Excel

С помощью VBA можно создавать объекты управления графического интерфейса пользователя, задавать и изменять свойства объектов, подключать к ним соответствующий программный код. Методика программирования с использованием языка VBA сводится к следующему:

создание объектов управления и контроля (диалоговые окна, пиктограммы, меню);

разработка процедур, используемых при вызове объектов;

прикладные программы на языке VBA оперируют со следующими понятиями:

объект управления и контроля - экранные формы, графические элементы внутри форм, в том числе текстовые окна, линейки прокрутки, пиктограммы, окна-списки, командные строки и др.,

свойство (параметр) - характеристика или атрибут объекта управления;

значение свойства;

событие - действие, которое распознается объектом управления;

метод доступа - аналогичное понятиям функция, оператор, который воздействует всегда на объект;

класс - это совокупность объектов, характеризующая общностью методов или свойств;

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

ЗАДАНИЯ. Записать макрос в MS Excel.. Запуск макроса на выполнение.. Просмотреть код созданного макроса.. Отредактировать код созданного макроса.. Удалить макрос.. Назначить макрос за различными объектами.

Технология работы

Запись макросов.

Макрос - это записанная последовательность команд и действий пользователя, сохранённая под уникальным именем, которую может выполнить Excel.

Код макроса может служить основой для дальнейших разработок и является учебным материалом, т.к. по коду макроса можно научиться записывать последовательность действий в VBA.

Имя макроса может содержать до 255 символов и должно начинаться с буквы. В имя могут входить буквы, цифры и знаки подчёркивания. Пробелы в именах макросов не допускаются. Так же следует помнить, что во время выполнения макроса не допускается ввод информации; отображать диалоговые окна Excel, например Сохранить документ.

Рассмотрим процедуру записи простого макроса, который изменяет шрифт и цвет в выделенном диапазоне ячеек.

.Откройте новую рабочую книгу;

.В ячейку А1 введите вашу фамилию, в ячейку В1 - имя, в ячейку С1 - номер группы;

.Перейдите в ячейку А1;

Выполните команду Сервис/ Макрос/ Начать запись. Появится диалоговое окно Запись макроса, показанное на рисунке 1.1:


Рисунок 1.1 - Диалоговое окно Запись макроса


.Введите название макроса МойПервыйМакрос, и нажмите ОК. На экране появится панель инструментов Остановить запись;

.Выполните команду Формат/ Ячейки. В диалоговом окне Формат ячеек перейдите на вкладку Шрифт;

.Установите размер шрифта 18 пунктов, цвет - красный. Щёлкните на кнопке ОК;

.Щёлкните на кнопке Остановить запись одноимённой панели инструментов.

Запуск макроса на выполнение.

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

.Выделите ячейку В1;

.Выполните команду Сервис/ Макрос/ Макросы. Появится диалоговое окно Макрос;

Рисунок 1.2 - Диалоговое окно Макрос


.Выделите макрос МойПервыйМакрос и щёлкните на кнопке Выполнить. Шрифт в ячейке В1 станет красным и размером 18 пунктов;

Проделайте туже последовательность действий для ячейки С1.

Просмотр кода созданного макроса.

По ходу записи макроса Excel запоминает действия пользователя и одновременно преобразует их в код VBA. Чтобы увидеть полученный код, выполните следующие действия:

.Выберите команду Сервис/ Макрос/ Макросы. Отобразится диалоговое окно Макрос;

.Выделите макрос МойПервыйМакрос и щёлкните на кнопке Изменить. Откроется окно редактора Microsoft Visual Basic, показанное на рис. 1.3:


Рисунок 1.3 - Окно редактора Microsoft Visual Basic

Первая строка макроса Sub МойПервыйМакрос() - представляет собой начало процедуры выполнения макроса и его имя. Следующие строчки, в начале которых стоит одиночная кавычка, являются комментариями, которые поясняют отдельные строки макроса. Последняя строка End Sub - конец процедуры выполнения макроса.

Редактирование кода макроса.

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

Редактировать код можно в редакторе Visual Basic. Попробуем изменить код макроса для этого выполните следующие действия:

.Выделите строку, которая начинается с.Name;

.Удалите эту строку, нажав клавишу Delete;

.Продолжайте удалять строки, пока не останется следующий фрагмент программы:

.Закройте окно редактора Visual Basic и вернитесь в свою рабочую книгу;

.В ячейке Е1 введите слово Тест;

.Не снимая выделения с ячейки Е1, выполните макрос Мой Первый Макрос, Вы видите, что макрос работает точно также, как и до удаления строк кода;

.Выполните команду Сервис/ Макрос/ Макросы;

.В диалоговом окне Макрос выделите макрос Мой Первый Макрос и щёлкните на кнопке Изменить;

Измените размер шрифта с 18 пунктов на 24. Код макроса должен выглядеть следующим образом:

Sub МойПервыйМакрос()Selection.Font= 24= 3WithSub

.Закройте окно редактора Visual Basic и вернитесь в рабочую книгу;

11.Выделите ячейку А1 и выполните макрос МойПервыйМакрос. Вы заметите, что шрифт в ячейке А1 увеличился.

Удаление макросов.

.Выполните команду Сервис/ Макрос/ Макросы. Появится диалоговое окно Макрос;

.Выделите макрос, подлежащий удалению, и щёлкните на кнопке Удалить;

.Появится окно, требующее подтверждения на удаление макроса;


Рисунок 1.4 - Окно Excel запрашивающее подтверждение удаления макроса


.Щёлкните на кнопке Да, и макрос будет удалён (в нашем случае нажмите кнопку Нет, так как этот макрос пригодится для следующих работ).

Назначение макросов различным объектам.

а) Назначение макросов командным кнопкам.

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

Давайте приступим к созданию макроса, создадим командную кнопку и с её помощью выполним макрос. Для этого выполним следующие действия:

. Выполним команду Вид/ Панели инструментов/ Формы. Появится панель, как на рис. 1.5:


Рисунок 1.5 - Панель инструментов Формы


.Щёлкните на инструменте Кнопка панели инструментов Формы. Указатель мыши примет форму небольшого чёрного перекрестия;

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


Рисунок 1.6 - Окно Назначить макрос объекту

4.Выберите макрос МойПервыйМакрос и щёлкните на кнопке ОК. Этот макрос будет назначен созданной кнопке;

.Щёлкните и выделите надпись Кнопка1 на командной кнопке. Нажав клавишу Delete и удалив надпись, введите текст новой надписи, например Размер шрифта;

.Установив указатель мыши на один из маркеров, которые окружают командную кнопку, Вы можете изменить размеры созданной кнопки;

.Щёлкните вне кнопки, чтобы снять с неё выделение;

.В ячейку А5 введите номер своей группы и нажмите Enter;

.Щёлкните на ячейке А5, а затем на созданной командной кнопке. Выполнится макрос МойПервыйМакрос.

б) Назначение макроса графическим изображениям.

Макрос, назначенный графическим объектам, будет выполняться более эффектно. Для назначения макроса графическому изображению выполните следующие действия:

.Выделите ячейку рабочего листа, где будет вставлено изображение;

.Выполните команду Вставка/ Рисунок/ Картинки;

.Выберите изображение для вставки в рабочий лист;


Рисунок 1.7 - Вставка графического объекта

4.После вставки изображения измените его размеры, чтобы они составляли 5х5 см;

.Щёлкните правой кнопкой мыши на изображении и в открывшемся меню выберите команду Назначить макрос. Отобразится окно, представленное на рис. 1.8:


Рисунок 1.8 - Диалоговое окно Назначить макрос объекту


.Выберите макрос МойПервыйМакрос и щёлкните на кнопке ОК;

.Щёлкните вне графического изображения, чтобы снять с него выделение;

.Введите число 2001 в ячейку А10;

.Выделите ячейку А10 и щёлкните на графическом изображении. Выполнится макрос МойПервыйМакрос.

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

. Выполните команду Сервис/ Настройка. Появится диалоговое окно Настройка;

Рисунок 1.9 - Диалоговое окно для добавления кнопок на панели инструментов


. Перейдите на вкладку Команды (рис. 1.9);

.В списке Категории выберите Макросы;

.В списке Команды выберите команду Настраиваемая кнопка;

.Перетащите команду Настраиваемая кнопка на какую-либо панель инструментов;

.Щёлкните правой кнопкой мыши на вновь добавленной кнопке. Появится контекстное меню (Рис. 1.10);

.В контекстном меню кнопки выберите пункт Выбрать значок для кнопки и в открывшемся списке значков выберите любой значок;

.Снова щёлкните правой кнопкой мыши на новой кнопке и выполните команду Назначить макрос. Откроется диалоговое окно;

.Выберите макрос Мой Первый Макрос и щёлкните ОК;

.Щёлкните на кнопке Закрыть диалогового окна Настройка;

.В ячейку В10 введите число 2001;

.Выделите ячейку В10 и щёлкните на созданной кнопке. Должен выполнится макрос Мой Первый Макрос.

Рисунок 1.10 - Контекстное меню при назначении макроса командной кнопке


Самостоятельная работа.

В рабочей книге MS Excel присвоить рабочим листам следующие имена Основной, Кредит, Вклад.

Записать макрос для перехода с листа Основной на лист Кредит. Закрепить этот макрос за командной кнопкой.

Записать макрос для перехода с листа Основной на лист Вклад. Закрепить этот макрос за графическим объектом.

Записать макрос на создание заголовка документа. Строки должны содержать следующую информацию:

АКЦИОНЕРНОЕ ОБЩЕСТВО «АЛЬЯНС»

Исполнительный директор

Главный бухгалтер

Примечание: Применить к данным следующее форматирование: кегль шрифта Times New Roman, размер шрифта 16, начертание полужирный.

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

Что такое VBA? В чем заключается методика создания программ в VBA?

Основные понятия объектно-ориентированного программирования.

Дайте определение: объекту управления и контроля, свойство (параметр), событие, метод, класс, процедура.

Что такое макрос? Что не должно содержать имя макроса? Процедура создания макроса.

Как просмотреть код макроса?

Как удалить макрос?

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


Лабораторная работа №2

Тема: Среда разработки приложений

excel оператор макрос приложение окно

Цель: изучить структуру редактора VBA, основных окон и элементов управления.

Задачи: - рассмотреть окно редактора VBA, назначение окна свойств и окна проекта;

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

Основные понятия

Среда разработки VBA

Если Вы собираетесь заниматься проектированием приложения, то, наверное, представляете не только, как оно будет выглядеть (внешний вид интерфейса), но и степень сложности работы с Вашей программой, учитывая то обстоятельство, что с ней может работать и новичок, и опытный пользователь.

Вы должны представлять, как и откуда будут поступать данные, а также, где и как будут храниться данные, полученные с помощью разработанного приложения, в каком виде Вы собираетесь выводить полученные результаты. Эти вопросы не поставят Вас в тупик, если владеть тем инструментарием, который предоставляет пользователю Excel. Запустить редактор VBA в Excel позволяет следующая команда Сервис /Макрос /Редактор Visual Basic.


Рисунок 2.1 - Среда разработки VBA


После запуска на экране появляется интегрированная среда разработки Visual Basic (рис.2.1), она состоит из:

Окно проекта(Project) показывает состав вашего проекта. Все объекты, составляющие приложение, объединяются в проект. Простейший проект содержит одну форму.

Конструктор форм (View Object). В это окно выводится либо изображение формы, либо окно программы (кода).

Форма(UserForm). По сути дела она представляет собой окно, в котором можно размещать различные управляющие элементы при создании приложения.

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

Окно свойств(Properties Window) отражает свойства объектов. Каждый элемент - форма, кнопка и т.д. - считается объектом и имеет свойства. Список свойств разделен на две колонки. В левой находятся свойства объекта, а в правой - значения свойств, установленные по умолчанию (их можно выбрать и изменить).

При работе с модулем на экран выводится новая панель инструментов Visual Basic (рис.2.2):


Рисунок 2.2 - Панель инструментов Visual Basic


Типы элементов управления

При создании экранной формы автоматически отображается панель инструментов Панель элементов (ToolBox). В Экранную форму можно вставить большое число разнообразных типов элементов управления. Элемент Надпись (Label) - это статическая область текста, обычно содержащая какую - либо поясняющую информацию, например к элементам интерфейса. обладает встроенным набором элементов управления. Используя этот набор и редактор форм не трудно создать любой пользовательский интерфейс, который будет удовлетворять всем требованиям, предъявляемым к интерфейсу в среде Windows. Элементы управления являются объектами. Поэтому, как любые объекты, они обладают свойствами, методами и событиями.

Создание элементов управления на рабочем листе или в форме, как правило, происходит на начальном этапе конструирования приложения. Иногда используется программное их создание в процессе приложения. Но этот подход применяется реже.

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


Элемент управленияИмяКнопка для создания элементаПолеTextBoxНадписьLabelКнопкаCommandButtonСписокListBoxПоле со спискомComboBoxПолоса прокруткиScrollBarСчетчикSpinButtonПереключательOptionButtonФлажокCheckBoxВыключательToggleButtonРамкаFrameРисунокImageRefEditRefEditНабор страницMultiPageНабор вкладокTabStripЭлемент управления TextBox (поле) с помощью кнопки Поле (TextBox) панели элементов управления . В основном TextBox используется для ввода текста, который в последующем используется в программе, или для вывода результатов расчетов программы. Текст, введенный в поле, обычно в программе преобразуется либо в числа, либо в формулы.

Основные свойства элемента управления TextBox:


TextВозвращает текст, содержащийся в полеVisibleДопустимые значения: True(поле отображается во время выполнения программы) и False(в противном случае)EnabledДопустимые значения: True(пользователь непосредственно может вносить изменения в содержание поля) и False(в противном случае)MultilineДопустимые значения: True(устанавливается многострочный режим ввода текста) и False(однострочный режим)WordWrapДопустимые значения: True(устанавливается режим автоматического переноса) и False(в противном случае)AutoSizeДопустимые значения: True(устанавливается режим автоматического изменения размера поля так, чтобы весь вводимый текст помещался в нем) и False(устанавливаетя фиксированный размер поля)ScrollBarsУстанавливает режим отображения в поле полос прокрутки. Допустимые значения: fmScrollBarsNone(не выводить полос прокрутки) fmScrollBarsHorizontal(выводить горизонтальную полосу прокрутки) fmScrollBarsVertical(выводить вертикальную полосу прокрутки) fmScrollBarsBoth(выводить горизонтальную и вертикальную полосы прокрутки) SelLenght,SelStart и SelTextЭти свойства характеризуют выделенный в поле фрагмент текста(длина, начало и сам фрагмент текста соответственно)MaxLenghtУстанавливает максимальное допустимое количество вводимых в поле символов. Если это свойство равно 0, то нет ограничений на вводимое количество символов.PasswordCharУстанавливает символ, отображаемый при вводе пароля. Если это свойство определено, то вместо вводимых символов в поле будет отображаться установленный символ

Надпись

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

Основные свойства элемента управления Label:


CaptionВозвращает текст, отображаемый в надписиVisibleДопустимые значения: True(поле отображается во время выполнения программы) и False(в противном случае)MultilineДопустимые значения: True(устанавливается многострочный режим ввода текста в поле) и False(однострочный режим)WordWrapДопустимые значения: True(устанавливается режим автоматического переноса) и False(в противном случае)AutoSizeДопустимые значения: True(устанавливается режим автоматического изменения размера поля так, чтобы весь вводимый текст помещался в нем) и False(устанавливается фиксированный размер поля)

Кнопка

Элемент управления CommandButton(кнопка) создается с помощью кнопки Кнопка(CommandButton) . Элемент управления CommandButton в основном используется для инициирования выполнения некоторых действий, вызываемых нажатием кнопки, например запуск или остановка ее выполнения, печать результатов и т.д.

Свойства элемента управления CommandButton:


CaptionВозвращает текст, отображаемый на кнопкеCancelДопустимые значения: True (устанавливаются отменяющие функции для кнопки, т.е. нажатие клавиши приводит к тем же результатам, что и нажатие кнопки) и False(в противном случае)VisibleДопустимые значения: True (кнопка отображается во время выполнения программы) и False(в противном случае)EnabledДопустимые значения: True (запрещено нажатие кнопки пользователем) и False(в противном случае)AcceleratorНазначает клавишу, при нажатии на которую одновременно с клавишей происходит запуск действий, связанных с кнопкой. Например, CommandButton1.Accelerator="C"PictureВнедряет на поверхность кнопки картинку. Например, CommandButton1.Picture=LoadPicture("c:\my_doc\Круг.gif") Функция LoadPicture (ПолноеИмяФайла) считывает графическое изображение. Аргумент ПолноеИмяФайла указывает полное имя графического файла DefaultЗадает кнопку по умолчанию, т.е. устанавливает ту кнопку, для которой действия, связанные с ней, будут выполняться при нажатии клавиши Enter.

Список

Элемент управления ListBox(список) создается с помощью кнопки Список(ListBox) . Элемент управления ListBox применяется для хранения списка значений. Из списка пользователь может выбрать одно или несколько значений, который в последующем будут использоваться в тексте программы.

Свойства элемента управления ListBox:


ListIndexВозвращает номер текущего элемента списка. Нумерация элементов списка начинается с нуляListCountВозвращает число элементов спискаTopIndexВозвращает элемент списка с наибольшим номеромColumnCountУстанавливает число столбцов в спискеTextColumnУстанавливает столбец в списке, элемент которого возвращается свойством TextEnabledДопустимые значения:True(запрещен выбор значения из списка пользователем) и False(в противном стлучае)TextВозвращает выбранный в списке элементListВозвращает элемент списка, стоящий на пересечении указанных строки и столбца. Синтаксис: List(row,column)RowSourceУстанавливает диапазон, содержащий элементы спискаControlSourceУстанавливает диапазон(ячейку), куда возвращается выбранный элемент спискаMultiSelectУстанавливает способ выбора элементов списка. Допустимые значения: fmMultiSelectSingle(выбор только одного элемента) fmMultiSelectMulti(разрешен выбор нескольких элементов посредством, либо щелчка, либо нажатием клавиши <Пробел>) fmMultiSelectExtended(разрешено использование клавиши при выборе ряда последовательных элементов списка)SelectedДопустимые значения:True(если элемент списка выбран) и False(в противном случае). Используется для определения выделенного текста, когда свойство MultiSelect имеет значение fmMultiSelectMulti или fmMultiSelectExtendedColumnWidthsУстанавливает ширину столбцов списка. Синтаксис: ColumnWidths=String String - строка, устанавливающая ширину столбцов. В следующем примере устанавливается ширина каждого из трех столбцов списка: With ListBox1 .ColumnCount=3 .ColumnWidths="20;30;30" End WithColumnHeadsДопустимые значения:True(выводятся заголовки столбцов раскрывающегося списка) и False(в противном стлучае)ListStyleДопустимые значения: fmListStylePlain(выбранный элемент из списка выделяется цветом) fmListStyleOption(перед каждым элементом в списке располагается флажок и выбор элемента из списка соответствует установке этого флажка)MatchEntryВыводит первый подходящий элемент из списка при наборе его имени на клавиатуре. Допустимые значения: fmMatchEntryNone(режим вывода подходящего элемента в списке отключен) fmMatchEntryFirstLetter (выводит подходящий элемент по набранной первой букве. В этом случае предпочтительно, чтобы элементы списка были бы упорядочены в алфавитном порядке) fmMatchEntryComplete(выводит подходящий элемент по полному набранному имени)BoundColumnУстанавливает тип, возвращаемый свойством Value. А именно, если свойство BoundColumn равно 0, то свойство Value возвращает индекс выбранной строки, т.е. в этом случае оно действует как свойство ListIndex если свойство Boundcolumn принимает значение из диапазона от 1 до количества столбцов в списке, то свойство Value возвращает элемент из выбранной строки, стоящий в столбце, определенным свойством BoundColumn

Методы элемента управления ListBox:


ClearУдаляет все элементы из спискаRemoveItemУдаляет из списка элемент с указанным номером. Синтаксис: RemoveItem (index) index -номер удаляемого из списка элементаAddItemДобавляет элемент в список. Синтаксис: AddItem ([item[,varIndex]]) item -элемент (строковое выражение), добавляемый в список varIndex -номер добавляемого элемента

Заполнение списка

Заполнить список можно одним из следующих способов.


Поэлементно, если список состоит из одной колонкиWith ListBox1 .AddItem "Июнь" .AddItem "Июль" .AddItem "Август" .ListIndex=0 End WithМассивом, если список состоит из одной колонкиWith ListBox1 .List=Array ("Июнь","Июль","Август") .ListIndex=1 End WithИз диапазона А1:В4, в который предварительно введены элементы списка. Результат выбора (индекс выбранной строки) выводится в ячейку С1.With ListBox1 .ColumnCount=2 .RowSource="A1:B4" .ControlSource="C1" .BoundColumn=0 End WithПоэлементно, если список состоит из нескольких колонок, например двухWith ListBox1 .ColumnCount=2 .AddItem "Июнь" .List(0,1)="Сессия" .AddItem "Июль" .List(1,1)="Каникулы" .AddItem "Август" .List(2,1)="Каникулы" End WithМассивом, если список состоит из нескольких колонок, например двухDim A(2,1) As String A(0,0)="Июнь" A(0,1)="Сессия" A(1,0)="Июль" A(1,1)="Каникулы" A(2,0)="Август" A(2,1)="Каникулы" With ListBox1 .ColumnCount=2 .List=A End With

Поле со списком

Элемент упраления ComboBox (поле со списком) создается спомощью кнопки Поле со списком (ComboBox) . Элемент управления ComboBox применяется для хранения списка значений. Он сочетает в себе функциональные возможности списка ListBox и поля TextBox. В отличие от ListBox, в элементе управления ComboBox отображается только один элемент списка. Кроме того, у него отсутствует режим выделения нескольких элементов списка, но он позволяет вводить значения, используя поле ввода, как это делает элемент управления TextBox.

Свойства объекта ComboBox, такие как ListIndex, ListCount, Enabled, List и методы Clear, RemoveItem и AddItem аналогичны соответствующим свойствам и методам списка ListBox. Кроме того, у него есть ряд уникальных свойств.

Приведем наиболее употребляемые из уникальных свойств элемента управления ComboBox.


DropButtonStyleУстанавливает вид раскрывающегося списка. Допустимые значения: ? fmDropButtonStylePlain (кнопка без символов) ? fmDropButtonStyleArrowDisplays (кнопка со стрелкой) ? fmDropButtonStyleEllipsis (кнопка с эллипсом) ? fmDropButtonStyleReduce (кнопка с линией)ListRowsУстанавливает число элементов, отображаемых в раскрывающемся спискеMatchRequiredДопустимые значения: True (в поле ввода раскрывающегося списка нельзя ввести значения, отличные от перечисленных в списке, т.е. в поле со списком отключается функция поля ввода) и False(в противном случае)MatchFoundДопустимые значения: True (среди элементов раскрывающегося списка имеется элемент, совпадающий с вводимым в поле ввода раскрывающегося списка) и False(в противном случае)

Полоса прокрутки и счетчик

Элемент управления ScrollBar (полоса прокрутки) создается с помощью кнопки Полоса прокрутки (ScrollBar) .

Свойства элемента управления ScrollBar.


ValueВозвращает значение полосы прокрутки (только целые неотрицательные числа)MinМинимальное значение полосы прокрутки (только целые неотрицательные числа)MaxМаксимальное значение полосы прокрутки (только целые неотрицательные числа)SmallChangeУстанавливает шаг изменения значения при щелчке по одной из стрелок полосы прокруткиEnabledДопустимые значения: True(пользователь может изменять значение полосы прокрутки) и False(в противном случае)VisibleДопустимые значения: True(полоса прокрутки отображается во время выполнения программы) и False(в противном случае)

Элемент управления SpinButton (счетчик) создается с помощью кнопки Счетчик (SpinButton) . Элемент управления SpinButton по своим функциональным возможностям аналогичен полосе прокрутке. Если не быть чрезмерным буквоедом, то можно сказать, что счетчик - это полоса прокрутки без ползунка. Счетчик имеет те же свойства Value, Min, Max, Enabled, Visible и SmallChange, что и полоса прокрутки.

Переключатель

Элемент управления OptionButton (переключатель) создается с помощью кнопки Переключатель (OptionButton) . Он позволяет выбрать один из нескольких взаимоисключающих параметров или действий. Переключатели обычно отображаются группами, обеспечивая возможность выбора альтернативного варианта.

Свойства элемента управления OptionButton.


ValueВозвращает True, если переключатель выбран и False в противном случаеEnabledДопустимые значения: True(пользователь может выбирать переключатель) и False(в противном случае)VisibleДопустимые значения: True(переключатель отображается во время выполнения программы) и False(в противном случае)CaptureНадпись, отображаемая рядом с переключателем

Флажок и выключатель

Элемент управления CheckBox (флажок) создается с помощью кнопки Флажок (CheckBox) . Этот элемент управления предоставляет пользователю возможность выбора. Флажок обычно имеет два состояния: установленное и сброшенное, но может настраиваться на выбор из трех альтернатив. Флажок имеет те же свойства, что и переключатель. Кроме того, флажок обладает уникальным свойством TripleState, позволяющим выбор из трех альтернатив. Свойство TripleState может принимать два значения: False (выбор из двух альтернатив True и False)и True (выбор из трех альтернатив True, False и Null).

Элемент управления ToggleButton (выключатель) создается с помощью кнопки Выключатель (ToggleButton) . Этот элемент управления предоставляет пользователю те же возможности, что и флажок.

Рамка

Элемент управления Frame (рамка) создается с помощью кнопки Рамка (Frame) . Он используется для визуальной группировки элементов управления. Основным свойством рамки является Capture, отображающее надпись рамки.

Рисунок

Элемент управления Image (рисунок) создается с помощью кнопки Рисунок . Он используется для отображения графических файлов в формате gif, cur, gif, ico, jpg и wmf. Перечислим некоторые из его свойств, используемых для управления выводом изображения.

Свойства, используемые для управления выводом изображения.


AutoSizeДопустимые значения: True(рисунок автоматически изменяет размер для того, чтобы отобразить изображение целиком) и False(в противном случае)PictureЗадает отображаемый графический файл. Используется с функцией LoadPicture. Синтаксис: Picture=LoadPicture(ПолноеИмяФайла) ? ПолноеИмяФайла - полное имя отображаемого графического файлаPictureSizeModeУстанавливает масштабирование рисунка. Допустимые значения: ? fmPictureSizeModeClip(не помещающиеся в границах объекта части рисунка обрезаются) ? fmPictureSizeModeStretch(рисунок масштабируется так, чтобы он занимал всю поверхность объекта) ? fmPictureSizeModeZoom(рисунок масштабируется с сохранением относительных размеров так, чтобы он помещался целиком внутри объекта)PictureAlignmentУстанавливает расположение рисунка внутри объекта. Допустимые значения: ? fmPictureAlignmentTopLeft(в верхнем левом углу) ? fmPictureAlignmentTopRight(в верхнем правом углу) ? fmPictureAlignmentCenter(в центре) ? fmPictureAlignmentBottomLeft(в нижнем левом углу) ? fmPictureAlignmentBottomRight(в нижнем правом углу)PictureTilingДопустимые значения: True(объект покрывается мозаикой из рисунка) и False(в противном случае)Ссылки на ячейки и диапазоны

Элемент управления RefEdit (редактирование ссылок) создается с помощью кнопки RefEdit . Элемент управления RefEdit обычно используется для ввода ссылок на ячейки и диапазоны. Основным свойством элемента управления RefEdit является Text, возвращающее строку, введенную в поле ввода этого элемента управления.

Набор страниц

Элемент управления MultiPage (набор страниц) создается с помощью кнопки Набор страниц

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

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

Объект MultiPage содержит в себе семейство Pages, являющееся набором всех страниц, входящих в этот объект.

Свойства объекта MultiPage.


Value и BoundValueВозвращает номер активной страницы. Нумерация производится с нуля.MultiRowДопустимые значения: True(если ярлыки не помещаются в одну строку, то они выводятся в несколько строк) и False(если ярлыки не помещаются в одну строку, то появляется полоса прокрутки, позволяющая переходить от страницы к странице)SelectedItemВозвращает выбранную страницу

Семейство Pages, содержащее все страницы, входящие в объект MultiPage, имеет единственное свойство Count, возвращающее число элементов семейства.

Методы семейства Pages.


AddСоздает новую страницу Синтаксис: Set Object=object.Add([Name[,Caption[,index]]]) ? object - семейство Pages ? Name - имя страницы ? Caption - текст, отображаемый на ярлыке страницы ? index - номер страницы, нумерация страниц производится с 0ClearУдаляет все страницы из семейства PagesRemoveУдаляет страницу из семейства PagesItemВозвращает страницу со специфицированным индексом. Синтаксис: Set Object=object.Item(collectionindex)

Набор вкладок

Элемент управления TabStrip (набор вкладок) создается с помощью кнопки Набор вкладок . Он позволяет создать несколько вкладок в диалоговом окне. Объект TabStrip содержит в себе семейство Tabs, представляющее собой набор всех вкладок. Объект TabStrip и семейство Tabs обладает теми же свойствами, что и объект MultiPage и семейство Pages.

Общие методы и события элементов управления

Основные общие методы элементов управления:


AddПозволяет добавить элемент управления во время выполнения программыMoveПеремещает элемент управленияSetFocusУстанавливает фокус на вызвавшем этот метод элементе управления. Часто применяется в программах обработки ошибокZorderПомещает объект до или после всех пересекающихся с ним объектов

Основные общие события элементов управления:


ClickПроисходит, когда пользователь выбирает элемент управления с помощью одинарного щелчка кнопкой мышиDblClickПроисходит, когда пользователь выбирает элемент управления с помощью двойного щелчка кнопкой мышиKeyPressПроисходит, когда пользователь нажимает любую клавишу на клавиатуре, кроме функциональных и клавиш управления курсоромChangeПроисходит при изменении значения элемента управленияGotFocus и LostFocusПроисходит, когда элемент управления получает или теряет фокусErrorИспользуется при уведомлении об ошибке

Элементы управления, можно вставлять не только в экранную форму, но и в рабочие листы.

ЗАДАНИЯ

Создать экранную форму.

Создать надпись на форме.

Создать текстовое поле.

Создать командную кнопку.

Связать элемент управления с рабочим листом.

Технология работы

Создание формы и определение ее свойств.

. Запустить VBA: Сервис - Макрос - Редактор Visual Basic. При открытии окна VBA появляется MS Visual Basic. При открытии окна могут иметь следующий вид (рис.2.3):



а) б)

Рисунок 2.3 - Редактор Visual Basic


По рисунку видно, что в первом окне объекты на экране не видны (рис.2.3а), а во втором окне присутствуют все необходимые для работы объекты (рис. 2.3б). Если в окне не достает каких-то объектов, то их можно вставить, используя соответствующие кнопки панели инструментов или команды строки меню:

Вставка (через строку меню):

<Окна проекта> - Вид - Окно проекта

<Окна свойств> - Вид - Окно свойств

<Формы> - Вставка (Insert) - UserForm

<Панели элементов> - Вид - Панель элементов.

Вставка (через панель инструментов) см. рис. 2.2, используется соответствующие кнопки.

Для того чтобы изменить цвет формы, используем окно свойств.

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

Свойства:

Name - имя объекта.


Рисунок 2.4 - Свойство BackColor


BackColor - цвет объекта (рис.2.4)

В палитре выбрать голубой цвет. Форма закрасится в соответствующий цвет.

Создание надписи.

1.На панели элементов выбрать элемент и создать на форме область для надписи. В эту область ввести текст «Лабораторная работа по VBA», или, используя свойство Caption в окне свойств (справа). Для форматирования шрифта - Font … - появляется диалоговое окно Выбор шрифта (рисунок 2.5). В этом окне выбираем Шрифт, Начертание, Размер. Затем ОК.

2.

Рисунок 2.5 - Диалоговое окно Выбор шрифта


. Для изменения цвета надписи выбрать свойство ForeColor (рисунок 2.6).

Рисунок 2.6 - Свойство ForeColor


Создание текстового поля.

С помощью панели элементов создать на форме текстовое поле (используя элемент «TextBox»).

В свойстве Captiоn ввести текст: Компьютерные технологии.

Создание кнопки.

С помощью панели элементов создать на форме произвольную небольшую кнопку (используя элемент «CommandButton»).

Измените надпись CоmmandButton1 на «Выход» используя свойство Captiоn.

Закрасить кнопку бледно-голубым цветом, используя свойство BackColor.

Сохраните проект под названием Лабораторная работа №2.


Рисунок 2.7 - Законченный вид формы

. Связывание элемента управления с рабочим листом.

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

.Поместите на рабочий лист флажок;

.Выделите его щелчком мыши;


Рис. 2.8 - Вкладка Элемент управления


.Щёлкните на нём правой кнопкой мыши и в контекстном меню выберите команду Формат объекта. Откроется диалоговое окно Формат элемента управления (см. рис. 2.8):

.Перейдите на вкладку Элемент управления;

.Щёлкнув в поле Связь с ячейкой и установив там курсор, щёлкните в ячейке А1, а затем на ОК.

.Щёлкните вне области флажка для снятия с него выделения;

.Установите флажок, щёлкнув на элементе Флажок. В ячейке А1 появится слово ИСТИНА;

.Сняв флажок, можно увидеть, что в ячейке А1 появилось слово ЛОЖЬ.

Поработаем с инструментом Полоса прокрутки.

.Создайте на рабочем листе полосу прокрутки;

.Щёлкните на ней правой кнопкой мыши и в контекстном меню выберите команду Формат объекта. Откроется диалоговое окно Формат элемента управления (см. рис. 2.9):


Рис. 2.9 - Вкладка Элемент управления


.Перейдите на вкладку Элемент управления;

.Щёлкнув в поле Связь с ячейкой и установив там курсор, щёлкните в ячейке А1, а затем на ОК;

.Щёлкните на полосе прокрутке на кнопке со стрелкой, направленной вправо. Значение в ячейке А1. увеличится на единицу. Продолжая щёлкать на этой кнопке, Вы увеличиваете значение в ячейке А3.

Самостоятельная работа.

Добавьте на экранную форму рамку Frame, измените надпись на «Изучает».

Внутри рамки поместите три флажка CheckBox. Присвойте им следующие надписи: «Базы данных», «Компьютерные сети», «Программирование».

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

Как запустить VBA?

Назовите элементы окна VBA?

Перечислите элементы управления.

Как заполнить список?

Как создать на экранной форме объект элемента управления?


Лабораторная работа №3

Тема: Программирование в VBA


Цель: изучить основные понятия создания приложений в VBA

Задачи: - научить правилам создания процедуры, функции;

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

Основные понятия

Основные понятия создания приложений в VBA

Под интерфейсом понимают совокупность средств, обеспечивающих взаимодействие пользователя и программ вычислительной системы. При разработке интерфейса пользователь должен быть заинтересован в максимально простом и удобном способе ввода и вывода данных. Важна и эстетическая форма подачи программы: это и размер формы, её фон, шрифт надписей, звуковое и графическое сопровождение. Также мы говорили о том, что на экранной форме пользователь создаёт элементы управления: текстовые поля, метки, командные кнопки. Эти элементы являются объектами языка Visual Basic for Applications. Объект - одно из основных понятий не только VBA, но и других объектно-ориентированных языков программирования. Каждый объект имеет своё имя и является представителем некоторого класса подобных себе объектов. Под классом объектов подразумевается общее описание таких объектов, для которых характерно наличие множества общих свойств и общих действий, которые способны выполнять эти объекты. Существует, например, класс Командная кнопка - общее описание кнопок в окнах приложений. Кнопки могут быть разных размеров и цветов, иметь разные подписи, но имеют множество общих свойств и событий (например, щелчок мыши по кнопке). Началом работы алгоритма, а, следовательно, и программы, является какое-нибудь событие. Событием (Event) называется характеристика класса объектов, описывающая внешнее воздействие, на которое реагирует объект этого класса во время работы приложения. Объектно-ориентированное программирование основано на следующей идее: программы управляются событиями. Пояснить это можно так: после проектирования экранной формы устанавливаются события, и только затем программируются действия, связанные с этими событиями.

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

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

Процедура - это независимая часть программы, которую можно вызвать по имени для выполнения определённых действий. Процедура выполняет один или несколько операторов и не возвращает значения. Примером процедуры является код макроса. Например:МойПервыйМакрос_Click()Selection.Font

Size = 18= 3WithSub

Процедура обозначается словом Sub, End Sub говорит о том, что процедура закончена. Процедура выполняется в ответ на какое-либо событие или говорят, что процедура обрабатывает событие. Имя процедуры состоит из названия объекта МойПервыйМакрос, и события, Click (щелчок), которое отделяется знаком подчёркивания от названия объекта.

Функция аналогична процедуре, но отличается тем, что возвращает в точку вызова основной программы единственный результат. Например, Y= ABS(X); - определяет модуль числа X и возвращает результат в точку вызова Y.можно использовать для создания собственных функций. Например, можно определить функцию Процент (число), которая будет определять процент от числа.Function Процент (число)

Процент = число*0.01/100Function

Функция может иметь аргумент Число. Аргумент Число может быть числом или ссылкой на ячейку рабочего листа. Величина процента является тем значением, которое возвращает функция.

В VBA существуют определённые правила для имён процедур и функций.

Первые три символа имени должны быть буквами

Имя может содержать буквы, цифры и знаки подчёркивания

Имя не может содержать пробелы, точки, запятые, восклицательные знаки и символы @, &, $, #

Имя не должно иметь более 255 символов

Объявление типа переменной

Переменные используются для хранения данных, которые могут изменяться в процессе выполнения процедуры. Объявление типа переменной означает, что пользователь устанавливает определённые границы, в которых может изменяться переменная. Тип переменной можно вообще не определять. Если тип переменной не объявляется, по умолчанию он принимается как тип Variant. В таблице 3.1 содержится информация о размере данных, т.е. об объёме памяти, выделяемом для хранения данных.


Таблица 3.1 - Типы данных в VBA

Тип данныхРазмер в байтахОписание типаByte1двоичные числа (0 … 255)Integer2целые числа (-32768 … +32767)Long4длинное целое число (-2 147 483 648 … +2 147 483 647)Boolean2логический тип (True, False )String10 + 1 байт на символстроковый тип (0 … 2 млрд. символов)Variant16с плавающей точкой (-1.797693Е308 … -4.9406564Е-324 для отрицательных чисел; 4.9406564Е-324 … 1.79769313Е308 для положительных чисел)

Для объявления переменной используется оператор Dim. Этот оператор имеет следующий синтаксис: ИмяПеременной As ТипДанных

Общие правила написания имени переменной

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

Имя может содержать буквы, цифры и знаки подчёркивания

Имя не может содержать пробелы, точки, запятые, восклицательные знаки и символы @, &, $, #

Имя не должно иметь более 255 символов

Можно не указывать тип данных при написании своих процедур и тогда по умолчанию VBA применит для Ваших переменных тип Variant. Но, просмотрев таблицу 1 можно увидеть, что ни один из типов данных не требует 16 байт для сохранения значений переменных. Неплохо бы экономить ресурсы памяти компьютера. Кроме того, не объявляя тип переменных вы рискуете получить результат выполнения Вашей программы, который будет далёк от ожидаемого.

Описание констант

Если в процедуре Вам нужна величина, которая бы не меняла своего значения, то применяются константы. Для их объявления используется оператор Const, имеющий следующий синтаксис:ИмяКонстанты As ТипДанных = Значение

Например:Gruppa As Integer = 25

Диалоговые окна для обмена сообщениями (MsgBox(), InputBox())

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

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

Встроенная функция MsgBox() обеспечивает создание диалоговых окон различных типов.

Простое окно-сообщение(строка_сообщение)

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

Окно-сообщение с командными кнопками(строка_сообщение [, <кнопки>][, заголовок_окна] [, <файл-подсказки>, <контекст>]),

где <строка_сообщение> - максимальная длина строки - 1024 символа;

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

<заголовок_окна> - строка символов;

<файл-подсказки> - имя файла-подсказки для контекстно-зависимой помощи при работе в окне, строка символов;

<контекст> - число, которое назначено подсказке для данного окна.

Функция MsgBox() возвращает код (число), соответствующий нажатой кнопке. Коды задания командных кнопок и пиктограмм приведены в таблице 3.2.


Таблица 3.2 - Список видов командных кнопок и их кодов

КодКонстантаОписание Коды командных кнопок0vbOKOnlyОК1vbOKCancelОК, Отмена2vbAbortRetryIgnoreПовторить, Прекратить, Игнорировать3vbYesNoCancelДа, Нет, Отмена4vbYesNoДа, Нет5vbRetryCancelПовторить, ОтменаКоды активности по умолчанию0vbDefaultButton 1Активная 1256vbDefaultButton 2Активная 2512vbDefaultButton 3Активная 3Коды пиктограмм16vbCriticalВажное сообщение32vbQuestionПредупредительный запрос48vbExclamationПредупредительное сообщение64vbInformationИнформационное сообщениеКоды модальности0vbApplicatinModalПрограммное модальное описание (требуется обязательный ответ, работа приложения приостанавливается)4096vbSystemModalСистемное модальное описание (требуется обязательный ответ, работа всех приложений приостанавливается)

Функция InputBox() обеспечивает формирование окна для вывода строки сообщения и ожидания ввода строки символов или нажатия кнопки. Возвращает содержание текстового блока:(строка_сообщение [,заголовок_окна] [,<текст-по_умолчанию>][, Xпоз][,Yпоз][,<файл-подсказки>, <контекст>])

где <текст-по_умолчанию> - строка символов, выводимая в текстовом блоке (может быть пустой),поз, Yпоз - позиция левого верхнего угла окна.

ЗАДАНИЯ. Создать процедуру выхода из формы.. Создать процедуру, выполняющую следующее: данные, введенные в текстовое поле должны отобразиться в надписи.. Создать процедуру с использованием встроенной функции MsgBox().. Создать процедуру, формирующую диалоговое окно с кнопками.. Создать процедуру, формирующую окно ввода.

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

Откройте сохраненный проект Лабораторная работа №2.

Задайте кнопке «Выход» команду закрыть. Для этого необходимо перейти к окну кода следующим образом: дважды щелкнув по кнопке «Выход», при этом откроется окно кода.

Внутрь процедуры впишите слово End.

Private Sub CommandButton1_Click()Sub

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

. Запустите проект и проверьте его на выполнение. Для этого необходимо выполнить одно из следующих действий:

на панели инструментов нажать на кнопку (запуск проекта);

используя строку меню, выполнить команду: Запуск/Запуск макроса (Run/Run macro);

использую функциональную клавишу F5.. Создание процедуры, выполняющей следующее: данные, введенные в текстовое поле должны отобразиться в надписи. Событие присвойте кнопке «Замена».

. На имеющейся форме создайте командную кнопку «Замена».

. Для открытия окна кода дважды щелкните по кнопке.

3. Запишите процедуру:Sub CommandButton2_Click()

Label1.Caption = TextBox1.Text ' присвоение заголовку Надписи (Label) текста, введенного в Текстовое поле(TextBox).Text = " " 'очистить текстовое полеSub. Создание процедуры с использование встроенной функции MsgBox().

Откройте новую рабочую книгу.

Запустите редактор VBA.

Добавьте модуль, выполнив следующую команду: Вставка/Модуль (Insert/Module).

В появившемся окне впишите следующую процедуру:Explicit обязательность объявления всех переменных перед их использованиемMsg_Priim() объявление процедурыa As Single объявление переменныхзапуск генератора случайных чисел=rnd присвоение переменной значения случайного числа«Значение случайного числа» & Str(a) вывод сообщенияSub конец процедуры

. Запустите модуль и проверьте его на выполнение. Для этого необходимо выполнить одно из следующих действий:

на панели инструментов нажать на кнопку (запуск проекта);

используя строку меню, выполнить команду: Запуск/Запуск макроса (Run/Run macro);

использую функциональную клавишу F5.

. Нажмите кнопку ОК и снова запустите модуль на выполнение. Убедитесь, что число в окне вывода стало другим. . Создание процедуры, формирующего диалоговое окно с кнопками.

. В существующем модуле измените тело процедуры, приведенной ниже:Explicit обязательность объявления всех переменных перед их использованием

Sub Msg_Priim() объявление процедурыResponse As StringMsg As StringTitle As StringHelp As StringCtxt As Integer

Dim Styl As Integer

'объявление переменных«Вы хотите продолжить?»=35

строка сообщения= «Пример окна-сообщения» заголовок окна=DEMO.HLP имя файла-подсказки=0 Номер контекста внутри файла-подсказки=MsgBox (Msg, Styl, Title, Help, Ctxt) Присвоение переменной кода ответа Sub конец процедуры

. Запустите модуль и проверьте его на выполнение.. Создание процедуры: формирование окна ввода.

. В существующем модуле введите следующую процедуру:Inp_Priim() объявление процедуры=InputBox(Введите фамилию студента, vbYesNo)

вывод диалогового окна сообщения(B2)=Fam вывод фамилии студента на рабочий лист Excel в ячейку В2 Sub конец процедуры

. Запустите модуль и проверьте его на выполнение.

Самостоятельная работа.

. В примере п.5 выполните изменения:

а) окно вывода сообщения с кнопками «Да», «Нет», «Отмена»;

б) окно вывода сообщения с кнопками «Повторить», «Отмена»;

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

Что такое процедура? Как записывается процедура?

Что такое функция?

В чем отличие процедуры от функции?

Основные типы переменной.

Что такое константа?

Как изменить цвет объекта?

Как отформатировать надпись?

Что такое Option Explicit?

Каково назначение функций InputBox и MsgBox?


Лабораторная работа №4

Тема: Виды условных операторов


Цель: ознакомить с видами условных операторов.

Задачи: - изучить виды алгоритмов;

изучить типы операторов и их синтаксис.

Основные понятия

До сих пор мы учились вводить данные и присваивать значения переменным. Теперь надо научиться организовывать различные потоки выполнения приложения в зависимости от ситуации, которая складывается в ходе работы программы. Не раз и не два Вы видели в окнах сообщений кнопки Да и Нет, Ок и Cancel, и знаете, что дальнейший ход программы будет зависеть от того, на какой кнопке щёлкнет пользователь.

Разветвляющийся алгоритм

Алгоритм называется разветвляющимся, если последовательность выполнения шагов алгоритма изменяется в зависимости от выполнения некоторых условий. Условие - это логическое выражение, которое может принимать одно из двух значений: ДА - если условие верно (истинно), и НЕТ - если условие неверно (ложно).

Простой условный оператор

Общий вид в алгоритме конструкции простого условного оператора изображен на схеме 1.

Схема 1



Синтаксис простого условного оператора, если Вы пишите программу структурно, следующий:<логическое выражение> Thenешение 1ешение 2If

Возможна и другая запись:<логическое выражение> Then Pешение1 Else Pешение2, If

где If, Then, Else, End If - зарезервированные слова, а Pешение1, Pешение2 - операторы.

Простой условный оператор работает по следующему алгоритму:

Сначала вычисляется логическое выражение. Если результат есть TRUE (истина), то выполняется оператор Pешение1, а оператор Pешение2 пропускается.

Если результат есть FALSE (ложь), то выполняется оператор Pешение2, а оператор Pешение1 пропускается.

Многозначные ветвления

Общий вид в алгоритме конструкции многозначных ветвлений показан на схеме 2.

Схема 2



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

Синтаксис многозначных ветвлений, если Вы пишите программу структурно, следующий:<лог. выражение1> Then

Pешение1

ElseIf <лог. выражение2> Then

Pешение2

ElseIf <лог. выражение3> Thenешение3ешение4If

Возможна и другая запись:<лог. выражение1> Then Pешение1 ElseIf <лог. выражение2>Pешение2 ElseIf <лог. выражение3>

Then Pешение3 Else Pешение4 If

где If, Then, Else, End If - зарезервированные слова, а Pешение1, Pешение2,Pешение3 Pешение4,- операторы.

Алгоритм работы такой конструкции следующий: если логическое выражение1 истинно, то выполняется оператор или блок операторов, следующих за конструкцией Then, в противном случае этот блок пропускается. Если логическое выражение, следующее за оператором If ложно, то анализируется логическое выражение, следующее за ElseIf. Если оно истинно, то выполняется оператор или блок операторов, следующих за Then, а остальные операторы пропускаются. Операторы, следующие за последним Else, выполняются лишь в том случае, если ложны все логические выражения в конструкциях If. Любая встретившаяся часть Else принадлежит ближайшей к ней части Then условного оператора. Условные операторы If в такой конструкции называются вложенными.

Для создания логических условий используются операторы сравнения которые приведены в таблицах 4.1 и 4.2.


Таблица 4.1

ОПЕРАТОР ПРИСВАИВАНИЯЕГО НАЗНАЧЕНИЕ=РАВНО>БОЛЬШЕ<МЕНЬШЕ>=БОЛЬШЕ ИЛИ РАВНО<=МЕНЬШЕ ИЛИ РАВНО<>НЕ РАВНО

Таблица 4.2

Логический операторОписаниеAnd (И)Если оба условия, соединённые этим оператором имеют значение ИСТИНА, то результат - ИСТИНА, в противном случае - ЛОЖЬOr (ИЛИ)Если хотя бы одно из условий, соединённых этим оператором, имеет значение ИСТИНА, то результат - ИСТИНА, в противном случае - ЛОЖЬNot (Не)Если логическое выражение имеет значение ЛОЖЬ, то результат применения к нему этого оператора - ИСТИНА. Если логическое выражение имеет значение ИСТИНА, то результат применения оператора - ЛОЖЬXor (исключающее ИЛИ)Если одно и только одно из условий, соединённых этим оператором, имеет значение ИСТИНА, то результат - ИСТИНА. Если оба условия имеют значения ИСТИНА или ЛОЖЬ, то результат - ЛОЖЬ

Оператор выбора Select Case

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

На этом примере видно, что за счёт вкладывания одного условного оператора в другой, конструкция усложняется, становится тяжёлой для восприятия. В подобных случаях хорошей альтернативой оператору If служит оператор выбора Select Case, который позволяет выбрать одно из нескольких возможных продолжений программы.

Синтаксис оператора Select Case следующий:

Select Case КлючВыбораIs выражение

оператордиапазон значений

оператордиапазон значений

оператордиапазон значений

операторElse

операторSelect

ЗАДАНИЯ. Создать процедуру с использованием простого условного оператора If.. Создать процедуру с использованием оператора выбора Select Case (с использованием функции Msgbox, работа с ячейкой).. Создать процедуру с использованием оператора выбора Select Case (с использованием функций Msgbox, InputBox).

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

Откройте новую рабочую книгу.

Вставьте модуль в редакторе VBA.

Создайте процедуру и назовите её Абитуриент().

Введите следующий код процедуры:Абитуриент()ball As String= MsgBox(«Вы хотите сдать аттестацию на 30 баллов?», vbYesNo)

If ball = vbYes Then(«b4»).Value = «Надо сдать все работы»

Else(«b4»).Value = «Вам будет трудно сдать экзамен»IfSub

Перейдите в рабочую книгу.

Вставьте командную кнопку в рабочий лист. В списке Имя макроса выберите процедуру Абитуриент и щёлкните на кнопке Ок.

Дайте кнопке новое имя - «Вопрос». Получим лист как на рис. 4.1.


Рис. 4.1 - Законченный вид рабочего листа


Щёлкните на кнопке «Вопрос». Отобразится окно сообщения (рис. 4.2).


Рис. 4.2 - Вопрос, требующий ответа


В этом примере значение переменной ball проверяется условным оператором If. После применения оператора Range(«b4»).Value = «Надо сдать все работы» в ячейку b4 рабочего листа заносится, то выражение, которое находится справа от оператора присваивания либо - «Надо сдать все работы», либо - «Вам будет трудно сдать экзамен». Создание процедуры с использованием оператора выбора Select Case (работа с ячейкой и функцией MsgBox).

Вставьте модуль в редакторе VBA.

Перейдите в рабочую книгу.

Вставьте командную кнопку в рабочий лист. В списке Имя макроса выберите процедуру ball и щёлкните на кнопке Ок.

Дайте кнопке новое имя - «Оценка».

.Запустите её на выполнение и убедитесь в том, что она работает. При этом оценка будет введена в ячейку А5.. Создание процедуры с использованием оператора выбора Select Case (работа с встроенными функциями MsgBox, InputBox).

Вставьте модуль в редакторе VBA.

Напишите код процедуры:Возраст()

Dim vozrast As Integer=InputBox(Введите ваш возраст, vbYesNo) Case vozrast Is <=7Дошкольник8 to 16Школьник17 to 30Студент31 to 60 Специалист ElseПенсионер

End SelectSub

Перейдите в рабочую книгу.

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

Дайте кнопке новое имя - Выбор.

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

Если значение переменной vozrast меньше или равно 7, отображается сообщение Ты дошкольник. Если значение переменной vozrast находится в диапазоне от 8 до 16, отображается сообщение Ты учишься в школе. Если значение переменной vozrast находится в диапазоне от 17 до 30, отображается сообщение Тебе пора заняться делом. Если значение переменной vozrast находится в диапазоне от 31 до 60, отображается сообщение Кто не работает, тот не ест. Если значение возраста не равно ни одному из предложенных диапазонов значений, выводится сообщение Вы заслужили отдых.

Самостоятельная работа.

Создать на рабочем листе командную кнопку с процедурой выполнения проверки правильности решения задачи (в процедуре использовать условный оператор If и встроенную функцию MsgBox). Условие задачи показано на рисунке 4.3.


Рисунок 4.3 - Условие задачи


В примере п.3 выполните изменения в тексте программы:

а) присвойте ячейке В3 значение переменной vozrast;

б) предусмотрите вывод ответа в ячейку А3.

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

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

Синтаксис простого условного оператора?

Синтаксис составного условного оператора?

Перечислите операторы сравнения?

Перечислите логические операторы?

Какой общий вид алгоритма конструкции многозначных ветвлений?

Для чего предназначен оператор If?

Для чего предназначен оператор Select Case?


Лабораторная работа №5

Тема: Циклическая обработка инструкций


Цель: ознакомить с видами циклов.

Задачи: - изучить виды циклических алгоритмов;

изучить типы циклических операторов и их синтаксис.

Основные понятия

Циклический алгоритм

Очень часто в программах надо выполнить определённые операторы несколько раз. Не логично записывать эту последовательность действий 20 или 50 раз подряд. В этих случаях организуют циклические вычисления. Алгоритм называется циклическим, если определенная последовательность шагов выполняется несколько раз в зависимости от заданной величины, которая называется параметром цикла.

Оператор цикла For…Next

Общий вид в алгоритме конструкции оператора For…Next, который позволяет выполнить группу операторов или один оператор заданное количество раз, покаазан на схеме 3.

Схема 3



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

Этот оператор имеет следующий синтаксис:счетчик = начало To конец [Step шаг]ешение1

[Exit For]ешение n[счетчик]

Где For(для), To(до), Step(шаг), Exit For(выход из цикла), Next(следующий) - служебные слова VBA, а Pешение1, Pешение n - операторы. Step является необязательным параметром. Если он опущен в программе, то значение параметра I увеличивается на 1. Параметр Step может быть любым действительным числом, как целым, так и дробным, как положительным, так и отрицательным. Работает оператор For следующим образом:

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

Программирование циклов Do

Для выполнения оператора For необходимо задать параметры, которые будут определять, сколько раз должен выполниться оператор(ы) цикла. Альтернативой циклу с For…Next является цикл Do, в котором группа операторов выполняется до тех пор, пока определённое логическое выражение имеет значение True (истина). Такие циклы нужно применять в тех задачах, где мы не можем знать точно, сколько раз будет повторен цикл. Например, Вы хотели бы, чтобы пользователь вводил пароль в вашей программе до тех пор, пока он не совпадёт с Вашим паролем. Существует несколько разновидностей цикла Do, в зависимости от условий его выполнения.

Циклы Do … While

Общий вид в алгоритме этого оператора представлен на схеме 4:

Схема 4


Синтаксис оператора следующий:While <логическое выражение>ешение 1ешение 2

…ешение n

где Do(выполнить), While(пока), Loop(петля) - зарезервированные слова, Pешение1, Pешение2, Pешение n - операторы.

Если логическое выражение после служебного слова While имеет значение True, то выполняются операторы Pешение1, Pешение2, Pешение n, после чего проверка логического выражения повторяется. Если логическое выражение имеет значение False, то происходит выход из цикла. Если условие в заголовке цикла не является истинным с самого начала, цикл Do не выполняется ни разу.

Другая возможная запись цикла:While Until <логическое выражение>ешение1ешение2

…ешение n

Смысл связки Do…While Until <логическое выражение> - до тех пор, пока логическое выражение истинно выполнять операторы Pешение1, Pешение2, Pешение n.

Циклы Do…Until

Повторяющиеся вычисления можно организовать, используя в программах, другой оператор Do…Until.

Общий вид в алгоритме этого оператора изображен на схеме 5.


Схема 5


Синтаксис оператора следующий:ешение1ешение2

…ешение n;Until <логическое выражение>

Цикл с оператором Do…Loop Until начинается с выполнения операторов внутри цикла, поэтому цикл, организованный с помощью этого оператора, в любом случае выполнится хотя бы один раз. Затем проверяется логическое выражение и если оно истинно, то осуществляется выход из цикла. Если же значение логического выражения ложно, то выполнение операторов Pешение1, Pешение2, Pешение n повторяется, а затем вновь проверяется логическое выражение.

Другая возможная запись цикла:ешение1ешение2

…ешение n;While <логическое выражение>

Структура цикла Do…Until имеет много общего с конструкцией Do…While. Разница заключается лишь в том, как проверяется условие цикла. В варианте Do…While цикл выполняется до тех пор, пока выполняется условие. В цикле Do…Until цикл выполняется, пока условие не станет выполняться.

ЗАДАНИЯ. Создать процедуру с использованием конструкции For … Next.. Создать процедуру с использованием конструкции Do…While.. Создать процедуру с использованием конструкции Do…Until.

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

а) в этом задании не используется переменная шаг и необязательный оператор Exit For. Эта процедура выполняет оператор Sum = Sum + Sqr (Count) 100 раз и отображает результат - сумму квадратных корней первых 100 целых чисел.

. Откройте новую рабочую книгу.

. Вставьте модуль в редакторе VBA.

. Создайте процедуру и назовите её SumSquareRoots().

. Введите следующий код процедуры:SumSquareRoots()

Dim Sum As Double, count As Integer= 0count = 1 To 100= Sum + Sqr(count)countSumSub

5. Запустите её на выполнение и убедитесь в том, что она работает. При этом будет выведена сумма квадратных корней первых 100 целых чисел.

В данном задании Count (переменная-счетчик цикла) имеет начальное значение 1 и увеличивается на 1 при каждом повторении цикла. Переменная Sum суммирует квадратные корни каждого значения Count

б) в этом задании используется переменная шаг, чтобы пропустить отдельные итерации цикла.

. Вставьте модуль в редакторе VBA.

. Создайте процедуру и назовите её SumOddRoots().

. Введите следующий код процедуры:SumOddSquareRoots()

Sum = 0count = 1 To 100 Step 2= Sum + Sqr(count)count

MsgBox SumSub

. Запустите её на выполнение и убедитесь в том, что она работает. В данном примере count(переменная-счетчик цикла) имеет начальное значение 1 и увеличивается на 2 при каждом повторении цикла. Переменная Sum суммирует квадратные корни каждого значения count.

в) циклы For … Next могут также содержать один или боле операторов Exit For. Когда программа встречает этот оператор, то сразу же выходит из цикла, как показано в следующем примере. Эта процедура определяет, какая ячейка столбца А на активном рабочем листе имеет наибольшее значение:

Вставьте модуль в редактор VBA.

Создайте процедуру и назовите её ExitForDemo().

Введите следующий код процедуры:ExitForDemo()

MaxVal = Application.WorksheetFunction.Max(Range("A:A"))Row = 1 To 65536TheCell = Range("A1").Offset(Row - 1, 0)

If TheCell.Value = MaxVal Then"Максимальное значение сталбца А находится в строке" & Row

TheCell.ActivateForIf

Next RowSub

. Запустите её на выполнение и убедитесь в том, что она работает. При этом процедура определит какая из ячеек столбца А на активном рабочем листе будет иметь наибольшее значение.

Максимальное значение в столбце вычисляется с помощью функции Excel Max. Затем это значение присваивается переменной MaxVal. Цикл For … Next проверяет каждую ячейку в столбце. Если определенная ячейка равна MaxVal, оператор Exit For заканчивает процедуру. Однако перед выходом из цикла процедура сообщает пользователю о расположении искомой ячейки и активизирует её.

г) оператор Exit For позволяет выйти из цикла For…Next до его завершения. Тем самым программа сможет среагировать на определённое событие, не завершая выполнение цикла заданное число раз. Например, в следующем примере.

. Вставьте модуль в редактор VBA.

. Создайте процедуру и назовите её Звонок1().

. Введите следующий код процедуры:Звонок1()

Dim i As Integername As String

For i = 1 To 10= InputBox ("Введите изучаемые вами предметы или слово Звонок для выхода")

If name = "Звонок" ThenForIfnameSub

4. Запустите её на выполнение и убедитесь в том, что она работает. При этом программа запрашивает у пользователя ввод до 10 предметов, но если введено слово "Звонок", то программа прервёт своё выполнение и приступит к обработке инструкций, следующих за оператором Next. Оператор Exit For обычно используется с оператором If или Select Case.. Создание процедуры с использованием конструкции Do…While:

а) в данном примере цикл Do…While обрабатывает данные до тех пор, пока не будет введено слово Звонок:

. Вставьте модуль в редактор VBA.

. Создайте процедуру и назовите её Звонок2().

. Введите следующий код процедуры:Звонок2()

Dim i As Integername As String

Do While name<>"Звонок"= InputBox("Введите изучаемые вами предметы или слово Звонок для выхода")

If name <> "Звонок" Thenname

End IfSub

. Запустите её на выполнение и убедитесь в том, что она работает. При этом программа будет выполняться до тех пор пока не будет введено слово «Звонок». позволяет проверять условие While в начале или в конце цикла. Разница между этими двумя синтаксисами связана с моментом, когда оценивается условие. В первом синтаксисе содержимое цикла может вообще не выполняться. Во втором содержимое цикла всегда выполняется (как минимум один раз).

б) Этот пример демонстрирует цикл Do…While с первым синтаксисом:

. Вставьте модуль в редактор VBA.

. Создайте процедуру и назовите её DoWhileDemo().

. Введите следующий код процедуры:DoWhileDemo()

Do While Not IsEmpty(ActiveCell).Value = 0.Offset(1, 0).Select

End Sub

. Запустите процедуру на выполнение и убедитесь в том, что она работает. Данная процедура использует активную ячейку как точку отчета и просматривает значения вниз по столбцу, вставляя ноль в активную ячейку. При каждом повторении цикла активной становится следующая ячейка в столбце. Цикл продолжается, пока функция VBA IsEmpty не определит, что активная ячейка пуста.

в) Далее покажем работу второго синтаксиса цикла Do…While. Цикл всегда будет выполнен хотя бы один раз, даже если исходно активная ячейка пуста:

. Вставьте модуль в редактор VBA.

. Создайте процедуру и назовите её DoWhileDemo1().

. Введите следующий код процедуры:DoWhileDemo1()

Do.Value = 0.Offset(1, 0).SelectWhile Not IsEmpty(ActiveCell)

End Sub

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

г) Ниже следует еще один пример цикла Do…While. Эта процедура открывает текстовый файл, считывает каждую строку, преобразует текст в верхний регистр, а затем сохраняет его на активном листе, начиная с ячейки А1, и продолжает перемещаться вниз по столбцу. Представленная процедура использует функцию VBA EOF, возвращающую True, если достигнут конец файла. Последний оператор закрывает текстовый файл.

Откройте Блокнот и запишите в нем следующий текст: «ООП - это программирование, направленное на объекты».

. Сохраните файл в папке Мои документы под названием ООП.txt.

. Вставьте модуль в редактор VBA Ms Excel.

. Создайте процедуру и назовите её DoWhileDemo2().

. Введите следующий код процедуры:DoWhileDemo2()

Open "c:\Мои докуметны\ООП.txt " For Input As #1= 0While Not EOF(1)Input #1, LineOfText("A1").Offset(LineCt, 0) = UCase(LineOfText)= LineCt + 1#1Sub

6. Запустите процедуру на выполнение и убедитесь в том, что она работает. При этом текст, набранный в программе Блокнот, отобразится в ячейке А1.. Создание процедуры с использованием конструкции Do…Until.

. В существующем модуле измените тело и название процедуры DoUntilDemo()., приведенной ниже:

Sub DoUntilDemo()"c:\Мои документы\ООП.txt " For Input As #1= 0Until EOF(1)Input #1, LineOfText("A1").Offset(LineCt, 0) = UCase(LineOfText)= LineCt + 1#1Sub

2. Запустите процедуру на выполнение и убедитесь в том, что она работает. При этом текст, набранный в программе Блокнот, отобразится в ячейке А1.

Примечание: Пример, приводимый ранее, был продемонстрирован для цикла Do…While, но теперь он изменен для иллюстрации возможностей цикла Do…Until. Единственное отличие - строка с оператором Do. Этот пример делает программу несколько понятнее, так как не используется отрицание, необходимое в примере Do…While.

Самостоятельная работа.

. К задаче напишите процедуру на использование оператора For…Next.

Задача: Найти сумму целых чисел от 1 до 50. В этом примере, описав, переменные счёт и сумма как целочисленные, обнуляется значение переменной сумма. Для чего это делается? Мы берём произвольную ячейку памяти компьютера и должны быть уверены в том, что в ней ничего не содержится. Ведь в цикле будет выполняться оператор сумма = сумма + счёт, то есть к тому что было в ячейке сумма прибавляется значение переменной счёт. И мы должны знать, что предварительно туда занесёно значение нуля. В результате запуска процедуры на выполнение Вы получите ответ: 1275.

. Измените тело процедуры в п.1 самостоятельной работы, используя оператор Do While.

Задача: Найти сумму целых чисел от 1 до 50. В цикле с оператором For ответом было число 1275. Что изменится в программе, если применить оператор Do While? Прежде всего, надо позаботиться о том, чтобы какая-нибудь переменная менялась в цикле от 1 до 50. Ведь такой величины как параметр цикла нет в конструкции Do While - Loop. В нашем примере это будет переменная K. Задав в качестве условия выхода из цикла k <> 50, и применяя в цикле, оператор sum = sum + k мы просуммируем все 50 слагаемых и должны получить в ответе 1275.

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

Дайте определение циклическому алгоритму?

Что такое цикл?

Для чего предназначен оператор For…Next?

Для чего предназначен Step?

Для чего предназначен оператор Do…While?

Для чего предназначен оператор Do…Until?

Для чего предназначен оператор InputBox?


Лабораторная работа №6

Тема: Разработка пользовательских приложений на языке VBA в Excel. Работа с UserForm и элементами управления


Цель: ознакомить с разработкой пользовательских приложений.

Задачи: - научить проектировать простые пользовательские формы;

научить проектировать сложные пользовательские формы.

Основные понятия

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

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

ЗАДАНИЯ. Создать простую форму для вывода справочной информации.. Создать простую форму для нахождения процента от введенного числа.. Создать сложную форму для вычисления выбранного арифметического действия к выделенным числам.. Разработать приложение, которое будет содержать пользовательскую форму для ввода названия организации и выбора её типа и вывода данных на рабочий лист.. Разработать сложное приложение, которое бы создавало базу данных для регистрации вкладов.

Технология работы. Создание простой формы для вывода справочной информации.

Запустите редактор VBA.

. Разработайте пользовательскую форму для определения видов контроля по дисциплинам «Информатика», «Математика» и «Экономтеория», как показано на рисунке 6.1.


Рисунок 6.1 - Законченный вид формы


. Для того чтобы написать процедуру обработки события нажатия кнопки «Информатика», дважды щелкните по ней. Активизируется модуль UserForm1, в котором введите процедуру: Sub CommandButton1_Click() .Text="Экзамен. Компьютерное тестирование"Sub

. Для обработки событий нажатий кнопок «Математика» и «Экономтеория» в модуле UserForm1 введите следующие две процедуры:

Private Sub CommandButton2_Click() .Text="Экзамен. Собеседование"SubSub CommandButton3_Click()

TextBox1.Text="Зачет. Тестирование"Sub

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

. В редакторе VBA разработать пользовательскую форму, показанную на рисунке 6.2.


Рисунок 6.2 - Пользовательская форма на вычисление процентов


. Для кнопки «Рассчитать» запишите следующий программный код:

Private Sub CommandButton1_Click()Result As Double= 0.01 * TextBox2 * TextBox1.Text = Result

End Sub

. Для кнопки «Очистить» запишите следующий программный код

Private Sub CommandButton2_Click()= " "

TextBox2 = " "= " "Sub

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


Рис. 6.3


. В редакторе VBA разработать пользовательскую форму, показанную на рисунке 6.3, где для изображения:

чисел используется элемент Список (ListBox);

Вычислить, Отмена - элемент Кнопка (CommandButton);

Операция - элемент Рамка (Frame);

Сумма, Произведение, Среднее - элемент Переключатель (OptionButton);

Результат - элемент Надпись (Label );

для отображения вычисляемого значения - элемент TextBox (Текстовое поле).

2. На кнопку «Вычислить» введите следующую программу <#"165" src="doc_zip63.jpg" />

Рисунок 6.4 - Пользовательская форма


. Откройте рабочую книгу и нажмите комбинацию клавиш <Alt+F11> для запуска VBA;

. Выберите вкладку Insert - UserForm, чтобы запустить пустое диалоговое окно;

. Свойства Caption объекта UserForm будет иметь значение по умолчанию - UserForm1. Воспользуйтесь окном Свойств (Properties) для того, чтобы изменить значение свойства Caption на Вывод названия организации (если окно Свойств (Properties) не отображается на экране, нажмите клавишу <F4>);

. Создайте форму пользователя и разместите на ней элементы управления, как показано на рис. 6.4;

Дважды щелкните по кнопке «Отмена» и введите следующую процедуру:

Private Sub CommandButton1_Click()начало процедуры

Unload UserForm1 закрытие формыSub конец процедуры

. Данная процедура выполняется после щелчка пользователем по кнопке «Отмена». Она вызывает выгрузку формы UserForm из памяти;

. Нажмите комбинацию клавиш <Shift+F7>, чтобы повторно отобразить объект UserForm1;

. Дважды щелкните по кнопке «Ok» и введите следующую процедуру:

Private Sub CommandButton1_Click() начало процедуры

Sheets("Лист1").Activate активизация рабочего листа

(связь с рабочим листом)= _.WorksheetFunction.CountA(Range("A:A")) + 1 определение пустой строки в рабочем листе, здесь Count (функция СЧЕТ), Range("A:A")) + 1 - выделяет диапазон ячеек, начиная с ячейки А1 с шагом +1

Cells(NextRow, 1) = TextBox1.Text передача имениOptionButton1 Then Cells(NextRow, 2) = "Фирма"OptionButton2 Then Cells(NextRow, 2) = "Корпорация"OptionButton3 Then Cells(NextRow, 2) = "Частное предприятие"

проверка условия.Text = "" 'Очистка элементов управления для следующих записей

OptionUnknown = True.SetFocusTextBox1.Text = "" Then

MsgBox "Введите название организации".SetFocusSubIf 'Проверка введения имениSub

. Перейдите на рабочий лист MS Excel и поместите элемент управления Кнопка панели элементов Visual Basic, после чего появиться диалоговое окно «Назначить макрос объекту», выберите вкладку «Создать». В окне модуля введите код:Кнопка1_Щелкнуть()начало процедуры.Showоткрытие формыSub конец процедуры

Поместите на ней надпись «Нажать» (рис. 6.5). С помощью этой кнопки будет вызываться разрабатываемое диалоговое окно, показанное на рисунке 6.4.


Рисунок 6.5 - Законченный вид рабочего листа


. Запустите проект и поверьте его на выполнение.

. Разработка сложного приложения, которое создает базу данных для регистрации вкладов.

. В редакторе VBA разработать пользовательскую форму, показанную на рисунке 6.6.


Рисунок 6.6 - Форма диалогового окна для программы регистрации вкладов

2. Элементам управления присвойте имена и свойства в соответствии таблицей 6.1.


Таблица 6.1

ЭлементИмяСвойстваСобытияФормаUserForm1.Initialize 2.Устанавливает количество элементов в списке. 3.Присваивает значения элементам списка.ФормаВкладCaption Прием вклада4.Изменяет текст в строке заголовка приложения. 5.Закрывает сроку формул. 6.Устанавливает всплывающие подсказки. 7.Формирует заголовки столбцов таблицы, обращаясь к специально созданной процедуре.КнопкаПринятьCaption ПринятьClick Вычисляет номер первой свободной строки. 1.Поверяет, введены ли данные в поля формы. 2.Записывает данные из элементов управления Формы в ячейки рабочего листаКнопкаОтменаCaption ОтменаClick 1.Вычисляет номер последней строки таблицы. 2. Удаляет содержимое из ячеек этой строки.КнопкаВыходCaption ВыходClick Завершает выполнение программыПолеФамилияПолеСумма вкладаПоле со спискомТип ВкладаПереключателиСеверное Центральное ВосточноеПолеПримечание

. Рабочему листу Excel c именем «Лист1» присвойте имя «Меню», а рабочему листу «Лист2» - «База».

. На рабочем листе с именем «Меню» поместите элемент управления Кнопка панели элементов Visual Basic и поместите на ней надпись «Прием вклада». С помощью этой кнопки будет вызываться разрабатываемое диалоговое окно.

. Для кнопки «Прием вклада» запишите код:Sub CommandButton1_Click()

'Вызываем процедуру формирования заголовков БД

ЗаголовокРабочегоЛистаSub

. Для формирования заголовков столбцов базы данных создайте процедуру Sub пользователя, которая будет вызываться из процедуры обработки кнопки рабочего листа Прием вклада. Для этого выполните команду меню Visual Basic Вставка, Процедура и присвойте ей имя ЗагловокРабочегоЛиста. Процедура выполняет следующие действия:

проверяет, заполнена ли первая строка - строка заголовков столбцов (по назначению ячейки А1), если заполнена, то не выполняет никаких действий, завершает работу и передает управление в точку вызова;

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

В окне редактирования кода введите текст программы этой процедуры:Sub ЗаголовокРабочегоЛиста()

'Активизируем рабочий лист.Worksheets("База").Activate

'Проверяем, есть ли названия столбцов БД

With ActiveSheet.Range("A1").Value = "Фамилия" Then

.Range("A2").Select.Cells.Clear

'Записываем названия столбцов("A1:E1").Value = Array("Фамилия", "Тип", "Сумма", "Отделение", "Примечание")

'Фиксируем первую строку

.Range("2:2").Select.FreezePanes = True

.Range("A2").Select

'Вставляем комментарии

.Range("A1").AddComment

.Range("A1").Comment.Visible = False

.Range("A1").Comment.Text Text:="Фамилия клиента"

.Range("B1").AddComment

.Range("B1").Comment.Visible = False

.Range("B1").Comment.Text Text:="Тип вклада"

.Range("C1").AddComment

.Range("C1").Comment.Visible = False

.Range("C1").Comment.Text Text:="Сумма вклада"

.Range("D1").AddComment

.Range("D1").Comment.Visible = False

.Range("D1").Comment.Text Text:="Отделение банка"

End IfWith

'Вызываем элемент Форма с именем Вклад

Вклад.ShowSub

В процедуру обработки события Initialize формы введите код:

Private Sub UserForm_Initialize()Вклад

.Северное.Value = True

'Установим длину элемента Список

.ТипВклада.ListRows = 3

'Присвоим значения элементами списка

.ТипВклада.List = Array("Срочный", "Депозит", "Текущий")

'Установим фокус элементу Кнопка с именем Принять

.Принять.SetFocusWithSub

В процедуру обработки события Initialize элемента Форма с именем «Вклад» запишите код:Sub Вклад_Initialize()

'Изменим название в строке заголовка приложения.Caption = "Регистрация. База данных Банк"

'Изменим название в строке заголовка.DisplayFormulaBar = FalseПринять

.Default = True

'Установка всплывающей подсказки

.ControlTipText = "Ввод данных в базу данных"

End WithОтмена

.Cancel = True

.ControlTipText = "Кнопка отмены"With

ЗаголовокРабочегоЛиста

End Sub

В процедуру обработки события Click элемента Кнопка с именем «Принять» введите код:Sub Принять_Click()

Декларадция переменных

Dim Фамилия As StringТипВклада As StringСуммаВклада As DoubleОтделение As StringПримечание As StringНомерСтроки As Integer

'Вычисление номера первой свободной строки

НомерСтроки=_

Application.CountA (ActiveSheet.Columns(1)) + 1Вклад.Фамилия.Text = "" Then"Вы забыли указать фамилию", vbExclamationSubIf.ТипВклада.Value = "" Then

MsgBox "Вы забыли указать тип вклада", vbExclamation

Exit SubIf=.Фамилия.Text

ТипВклада =.ТипВклада.Value.Северное.Value = True Then Отделение = "Северное".Центральное.Value = True Then Отделение = "Центральное".Восточное.Value = True Then Отделение = "Восточное"

If IsNumeric(.СуммаВклада.Text) = False Then"Введена неверная сумма", vbExclamationSubIf

СуммаВклада = CDbl(.СуммаВклада.Text)

Примечание =.Примечание.TextWith

'Записываем данные в ячейки рабочего листа

With ActiveSheet

.Cells(НомерСтроки, 1).Value = Фамилия

.Cells(НомерСтроки, 2).Value = ТипВклада

.Cells(НомерСтроки, 3).Value = СуммаВклада

.Cells(НомерСтроки, 4).Value = Отделение

.Cells(НомерСтроки, 5).Value = ПримечаниеWithSub

В процедуру обработки события Click элемента Кнопка с именем «Отмена» поместите код:

Private Sub Отмена_Click()НомерСтроки As Integer

"Вычисляем номер последней строки

НомерСтроки = Application.CountA(ActiveSheet.Columns(1))

'Удаляем содержимое ячеек строкиActiveSheet

.Cells(НомерСтроки, 1).Value = ""

.Cells(НомерСтроки, 2).Value = ""

.Cells(НомерСтроки, 3).Value = ""

.Cells(НомерСтроки, 4).Value = ""

.Cells(НомерСтроки, 5).Value = ""WithSub

В процедуру обработки события Click элемента Кнопка с именем «Выход» поместите код:Sub Выход_Click()

'Активизируем рабочий лист с именем Меню("Меню").Activate

'Завершаем выполнение программыSub

Перейдите в приложение MS Excel, активизируйте рабочий лист Меню, изображенный на рисунке 6.7 и щелкните на кнопке «Прием вклада». Программа должна активизироваться, и на экране появиться созданное диалоговое окно (рисунок 6.6).


Рисунок 6.7 - Законченный вид листа «Меню»


Отладьте и проверьте работу программы во всех режимах.

Сохраните проект.

Самостоятельная работа.

. В примере п.2 выполните изменения в теле процедуры: выведите результат вычислений в ячейку С1.

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

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

. Как присвоить текстовому полю (TextBox) какое-либо значение?

. Какая панель инструментов используется для размещения элементов управления на рабочем листе?

. Как вызвать панель инструментов Формы на рабочий лист MS Excel?

. Что означают события: Click, Initialize и методы: Show, Unload, Hide?

. Что означает свойство MultiSelect?

Список рекомендуемой литературы


1.Экономическая информатика: Учебник/под ред. В.П. Косарева. - 2-е изд., перераб. и доп. - М.: Финансы и статистика, 2004. - 259с.: ил.

2.Дж. Уокенбах. Профессиональное программирование на VBA в Excel 2002.: пер. с англ.. - М.: Издательский дом «Вильямс», 2003. - 784 с.: ил.

.Симонович С. Занимательное программирование на Visuаl Basic. М.: АСТ - ПРЕСС КНИГА: Инфорком-Пресс. 2002. - 320 с.

.Э. Бунин. Excel Visual Basic для приложений (серия «Без проблем!»): Пер. с англ. - М.: Восточная книжная компания, 1996. - 352 с.: ил.

.Волченков Н.Г. Программирование на Visual Basic 6: в 3-х ч. Часть 3. - М.: ИНФРА-М, 2002. - 238 с.



Министерство науки и образования Республики Казахстан РГКП «Костанайский государственный университет им. А. Байтурсынова» Институт экономики и ф

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ