Создание циклической программы с командным управлением
Департамент образования города Москвы Педагогический колледж № 1 имени К.Д. Ушинского
А. М. ЗЕЙБЕРТ
Программирование На VBA в среде MS Excel Часть 2. Создание интерактивных программ
Пособие для преподавателей и студентов
Москва 2007–2009 Программирование пользовательской формы Подход к уроку: Начинаем новую линию курса. Мы должны научиться создавать интерактивные программы, т.е. программы, в которых пользователь может выполнять какие-либо действия, вести диалог с компьютером. Образцы, на которые мы ориентируемся, – это тест с выбором ответа из нескольких предложенных и математический тренажер, в котором надо решать примеры и печатать ответы. Средой или объектом, в котором работают такие программы, является пользовательская форма. Общие принципы программирования пользовательской формы Пользовательская форма представляет собой окно (контейнер), на котором могут быть размещены элементы управления. Элементы управления выполняют следующие функции: · выводят информацию на экран; · позволяют пользователю ввести информацию; · позволяют пользователю запустить какое-либо действие. (см. «Обзор элементов управления» и справку «Элементов управления. Свойства») Обычно программирование пользовательской формы описывается тремя принципами: 1. Объектно-ориентированное программирование 2. Визуальный стиль разработки программ 3. Объектно-событийная организация программы. Объектно-ориентированное программирование Каждый элемент управления является объектом. Следовательно, он имеет имя, свойства, методы.
Форматы обращения к свойствам и методам известны из предыдущих тем:
Визуальный стиль разработки программ Визуальный стиль приводит к новой технологии программирования, которая отличается от традиционной. Ее принятое название – WYSIWYG (What You See Is What You Get – то, что вы видите, это именно то, что вы получите). Общая идея WYSIWYG: значительную часть работы по созданию программы можно сделать редакторскими средствами. В Excel Basic есть два уровня данной технологии: Уровень 1. Существует конструктор формы, в нем можно «вручную» создавать элементы управления и устанавливать их начальные свойства.
В нем можно задавать или выбирать из списка начальные значения свойств. Объектно-событийная организация программы Объекты (элементы управления) распознают события и готовы в ответ на событие запустить заранее написанную программу. События, как правило, связаны с действиями пользователя (например, щелчок мышки). В результате меняется облик программы: · управление передается объектам, т.е. в значительной мере пользователю; · вместо большой программы есть несколько маленьких программ для каждого объекта; · существуют моменты, когда никакая программа не работает. Средством реализации данного принципа являются событийные процедуры (см. далее). Редакторская работа с формой Создать пустую пользовательскую форму:
1. Редактор Visual Basic 2. Меню–Insert–UserForm Должна появиться форма и панель элементов. Если панели нет, то: Меню–View–ToolBox. Создать элемент управления: 1. Выбрать элемент на панели элементов. 2. «Нарисовать» его в нужном месте формы. Элемент можно редактировать: · непосредственно в форме (перетаскивание границ, надписи и т.п.); · с помощью окна свойств.
Каждая форма имеет свой модуль программ. Создать модуль программ для формы: Меню– View–Code либо двойной щелчок по любому элементу управления или по форме (см. Событийные процедуры). Переключение между формой и модулем программ: Меню–Window–… Запуск формы на выполнение 1. Выделить форму (щелчок по заголовку) 2. Меню–Run–Run Sub/UserForm Обзор элементов управления
См. также распечатку «Элементы управления. Свойства». Событийные процедуры Каждая событийная процедура выполняются как реакция определенного объекта на определенное событие. Для того, чтобы система знала, когда запускать процедуру (для какого объекта и в ответ на какое событием), процедуру надо правильно назвать: · каждый объект имеет имя; · каждое событие имеет в VBA определенное название; · формат имени событийной процедуры: Sub <Объект>_<Событие> · пример (щелчок по кнопке): Sub CommandButton1_Click Текст событийной процедуры пишется по обычным правилам. В редакторе Visual Basic есть возможность не писать заголовок вручную, а получить его в готовом виде. Автоматическое создание заготовки событийной процедуры. Вариант-1: У каждого элемента управления есть так называемое «событие по умолчанию». Чтобы создать процедуру для такого события, надо дважды щелкнуть по элементу управления в конструкторе формы. Вариант 2: В модуле программ из раскрывающихся списков (вверху, над текстом процедур) выбрать: 1) объект; 2) событие. Если при этом появится «лишняя» заготовка, ее можно удалить.
На первых порах мы будем использовать два события: · щелчок по кнопке. · инициализация формы (событие возникает при запуске формы на выполнение) Пример первой программы Техническое задание:
Редакторская работа 1. Создайте форму. 2. Разместите на ней элементы управления. 3. В редакторе формы: 3.1 уточните их место и размеры; 3.2 измените текст надписи и кнопки. 4. С помощью окна свойств подберите шрифт надписи (поля, кнопки). Для этого: 4.1 убедитесь, что надпись выделена; 4.2 в окне свойств найдите свойство Font (шрифт); 4.3 «вщелкнитесь» мышкой в ячейку со значением свойства – в правой части ячейки должна появиться кнопка с многоточием; 4.4 щелкните по этой кнопке – должно появиться диалоговое окно «Выбор шрифта»; 4.5 установите характеристики шрифта. 5. Осуществите двойной щелчок по кнопке, чтобы получить модуль программ и автоматически создать заготовку для процедуры CommandButton1_Click. Программирование Для решения задачи нам будет достаточно событийной процедуры CommandButton1_Click. Скорректируем (применительно к пользовательской форме) общий подход к решению задач, в которых есть обмен информацией между программой и другими объектами: 0) Планируем внутренние переменные. 1) Значения свойств элементов управления переносим в переменные. 2) Решаем задачу в обычных переменных. 3) Итоговые значение переносим из переменных на свойства элементов управления. Схематически изобразим план решения задачи:
По справочнику «Элементы управления. Свойства» найдем нужные свойства элементов: Caption для надписи и Text для поля. «Четвертым» действием спрячем поле; для этого нам пригодится свойство Visible. Имена элементов управления видны в окне свойств (свойство Name), также они указаны и в справочнике.
Создание циклической программы с командным управлением Подход к уроку: Первым образцом подобной программы будет тест с выбором ответа из нескольких предложенных. В тесте будет несколько вопросов, с которыми мы будем выполнять одинаковые действия, – это безусловный признак цикла. Пользователь будет выбирать ответ и щелкать по кнопке, тем самым давая программе команду двигаться дальше – это называется командным управлением. «Хитрость» заключается в том, что циклическая по сути программа будет организована без использования обычных циклов (For i или While). Это является следствием объектно-событийной организации программы для пользовательской формы. Материал в данном разделе организован по «концентрическому» принципу: мы постараемся как можно быстрее сделать пусть примитивный, но зато работающий вариант программы, а затем будем совершенствовать его, постепенно осваивая новые возможности. Для начала возьмем простой вариант теста – с одинаковым количеством ответов на все вопросы. Организация данных Исходные данные теста мы размещаем на листе электронной таблицы.
Для адресации заведем глобальную объектную переменную с именем mesto1. Рекомендуется завести глобальную переменную для хранения количества ответов на один вопрос (Kol). Результаты теста также будем запоминать в таблице, но на другом листе. Для адресации будем использовать глобальную объектную переменную с именем mesto2. Рекомендуются осмысленные имена листов («Данные», «Результаты»). Глобальными называются переменные, значения которых доступны из любой процедуры. Глобальные переменные объявляются обычным способом, но в самом начале модуля, до описания процедур. Начальные значения глобальных переменных надо задать:
· в стартовой процедуре (Форма_Инициализация) · с подробным адресом, например: Set mesto1 = Worksheets(“Данные”).Range(“A1”)
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|