Язык Visual Basic for Applications (VBA) используется для программирования приложений Microsoft Office. Он поддерживает современные технологии программирования и содержит специфические для каждого приложения объекты, в частности EXCEL.
Изучение VBA не является обязательным для уровня общего среднего образования, однако его использование на школьных уроках информатики весьма полезно в силу высокой дидактической значимости этой среды. С одной стороны, VBA можно обучать на заключительном этапе знакомства с информационными технологиями, с другой стороны, изучение его является логическим продолжением и совершенствованием навыков программирования, полученных при изучении языков структурного программирования. Все приложения Microsoft Office имеют макроязык и средство записи макросов. При записи макросов создается код, который можно просмотреть и отредактировать. Все макрокоманды VBA включаются в проекты, которые могут принадлежать различным документам.
При создании проекта используется один из трех методов:
- запись макроса при помощи макрорекодера, с последующим его редактированием;
- создание макроса в редакторе VBA;
- создание проекта в редакторе VBA.
Для школьников, изучающих Excel, разработано большое количество задач разного уровня сложности. В настоящее время в существующих учебниках недостаточно информации по программированию на VBA для организации процесса обучения. Литературу, предназначенную для программистов, можно отнести в разряд справочной. Преподавателю для управления учебными действиями учащихся необходимо составить учебные задачи так, чтобы их операционная структура соответствовала педагогическим целям и учебному материалу. В рассматриваемой системе типовых дидактических задач учитывалось то, что у учащихся имеются навыки работы с электронными таблицами, они знакомы с понятиями алгоритм и программа. Кроме того, в процессе подбора задач ставилась цель, чтобы учащиеся достигли определенного уровня когнитивной активности. Представленные задачи систематизировались по степени возрастания сложности и проблемности. Учебная проблема имеет трехкомпонентную структуру: задача, познавательное действие учащегося, дидактический прием учителя.
Задача 1. Записать макрос с именем СУММА, который заполняет ячейки А1:А22 целыми числами 1, 2, …, 20 и вычисляет их сумму в ячейке А21.
Пояснение к решению задачи.
Запустите в основном приложении средство автоматической записи макросов с помощью команды Сервис —> Макрос —> Начать Запись. Выполнив требуемые действия, остановите запись, нажав кнопку Остановить запись.
Задача 2. Создать макрос СБРОС, который удаляет значения из ячеек А1: А21.
Задача 3. Обеспечить удобный запуск макросов. Создать с помощью панели рисования две кнопки СУММА и СБРОС для уже созданных одноименных макросов.
Пояснение к решению задачи.
Курсор мыши установить на рисованный объект и последовательно нажать на левую кнопку мыши, а за тем на правую, что вызовет появление пункта меню Назначить макрос.
Задача 4. Обеспечить удобный запуск макросов. На листе EXCEL cоздать с помощью панели элементов управления две кнопки СУММА и СБРОС.
Пояснение к решению задачи.
В процедурах обработки нажатия на эти кнопки поместить вызов уже созданных одноименных макросов.
Задача 5. Создать тест для проверки знаний. В нем имеются две кнопки. При нажатии на кнопку “проверка” выдается сообщение о результате тестирования. При нажатии на кнопку “очистка” можно вновь повторить тестирование.
Пример оформления теста на листе EXCEL:
Тема: “Языки программирования высокого уровня”
Вопрос 1.
Переменная – это:
- объект, способный принимать различные значения;
- значения чисел;
- меняющееся число.
Ваш ответ:
Вопрос 2. …………
Кнопка “проверка” Кнопка “очистка”
Задача 6. Создать тест, который занимает несколько листов. На первом листе поместить титульный лист для ввода информации о тестируемом. Каждый вопрос размещен на отдельном листе. На последнем листе помещается информация о прохождении теста по каждому вопросу. Перемещение по тесту реализовать с помощью кнопок. Установить защиту от внесения изменений.
Примечание. В тесте может быть как текстовая информация, так и графическая.
Задача 7. Создайте компьютерную игру, моделирующую игру “Быки-Коровы”. Смысл игры на рис.1
Рис. 1
Компьютер загадывает число из четырех цифр. Ваша задача отгадать число из 10 попыток. После каждой попытки компьютер выводит информацию о совпадении цифр введенного числа с загаданным. Бык означает, что цифра отгадана и стоит в нужной позиции. Корова означает, что цифра отгадана, но она стоит не в своей позиции. Кнопки для ввода цифр расположены на панели справа. Кнопка Новая игра инициирует новую игру. Кнопка Решение показывает загаданные цифры.
Пояснение к решению задачи.
Задача решается в 4 этапа:
- Ввод игрового поля и панели кнопок.
- Ввод текста программы в редактор Visual Basic.
- Назначение кнопкам панели макросов-подпрограмм.
- Отладка и тестирование программ.
Ниже представлен текст программы.
Задача 8. Создайте функции пользователя:
Пояснение к решению задачи.
Пусть при работе с рабочей книгой пользователь часто использует функцию, заданную следующим образом:
Можно просто вводить формулу: =sin (ПИ ( ) *А1) *ЕХР (-2*А1).
Однако при постоянном ее использовании лучше создать функцию пользователя, чтобы не вводить эту формулу каждый раз заново.
Функции пользователя создаются на рабочем листе с названием модуль VBA, после чего с ними можно работать с помощью мастера функций. Для создания модуля VBA необходимо выбрать команду Сервис/Макрос/Редактор Visual Basic. Далее в открывшемся редакторе выбрать команду Вставить/Модуль. Теперь на вставленном листе модуля можно ввести текст следующей программы:
Function Y(x)
Y = sin (Application. Pi( ) * x) * Exp (-2 * x)
End Function
Функция Pi() в VBA возвращает значение постоянной Так как функция Pi() не является внутренней функцией VBA , то ее надо записать в форме Application. Pi( ).
По умолчанию созданная функция при выборе ее с помощью мастера функций относится к категории Определенные пользователем. Категорию можно изменить. При активном листе Модуль1, на котором введена функция У, нажмите диалоговое окно Просмотр объектов. При нажатии кнопки Параметры открывается диалоговое окно Параметры макроса. В этом окне в поле Описание введите текст комментария, например, Вспомогательная функция.
С помощью окна Параметры макроса можно также изменить категорию, к которой относится данная функция. После внесения необходимой информации надо нажать ОК, а затем кнопку Закрыть диалогового окна Просмотр объектов.
Теперь все готово для работы с функцией У. Пусть в ячейку А1 записано число 0,2 и нужно в В1 вычислить значение функции У при х = 0,2. Для этого в ячейку В1 нужно ввести формулу =У (А1). Это можно сделать и с помощью мастера функций.
Общий вид функции пользователя:
Function ИМЯ_ФУНКЦИИ (СПИСОК_ПАРАМЕТРОВ)
ТЕЛО_ФУНКЦИИ
End Function
Именем функции или переменной может быть любой идентификатор, определенный пользователем. Идентификатор – это последовательность букв, цифр и символа подчеркивания, начинающаяся с буквы. Пробелы внутри недопустимы, так же как цифры в начале. Пробелы заменяются символом подчеркивания, например, Date_Today_1.
Задача 8. Создайте функцию, вычисляющую по данной формуле один из трех элементов по двум заданным.
Объем пирамиды V = (1/3)* S0*h, где S0 – площадь основания пирамиды, h – высота.
Объем призмы V = S0*h, где S0 – площадь основания призмы, h – высота.
Площадь параллелограмма S = aha , где a – сторона, ha – высота к этой стороне.
Длина средней линии L = (1/2)*(a+b), где а, b – основания трапеции.
Задача 9. Создать компьютерную игру, моделирующую игру “Орел и Решка” рис.
2.
Игрок вносит в банк определенную сумму денег. Во время игры нельзя добавлять деньги в банк. Игра состоит из последовательности шагов, которая может быть бесконечной. На очередном шаге и игрок загадывает либо орел, либо решку. Компьютер “бросает монету”. Если “монета падает той же стороной”, которую загадал игрок, то банк увеличивается на единицу, в противном случае – уменьшается на единицу. Игра заканчивается либо по желанию игрока, либо когда величина банка становится нулем или больше 10000. Игрок забирает себе содержимое банка. В приложении отслеживаются максимальные и минимальные суммы, которые были в банке в течение игры
Приложение создается в среде редактора Visual Basic. На форме создается требуемое диалоговое окно, далее для нее пишется код программы.
Задача 10. Разработайте приложение для “Игры в двенадцать”. Последовательно до трех раз бросается игральная кость. Игрок может бросить кость только один раз, или оценив результат первого броска – выполнить его во второй раз, или помня результаты двух предыдущих – бросить кость в третий раз. Все выпавшие очки суммируются. Если эта сумма 12 и более очков, то игрок проигрывает и игра заканчивается. Если сумма менее 12 очков, то в игру вступает компьютер. Компьютеру известно только то, что игрок набрал менее 12 очков. Компьютер, как и игрок, может совершать до трех попыток бросания игральной кости. Если он наберет 12 и более очков, то компьютер проигрывает. Если компьютер набирает менее 12 очков, то они сравниваются с очками игрока. Побеждает тот, у кого большая сумма очков.
Литература
- Гарнаев А.Ю. Самоучитель VBA. – СПб.: БХВ – Петербург, 2003. – 512с.: ил.
- Информатика в школе: Приложение к журналу “Информатика и образование”. № 2 – 2003. – М.: Образование и Информатика, 2003. – 160 с.
- Куправа Т.А. Excel/ Практическое руководство. – М.: “Диалог-МИФИ”, 2004. – 240 с.
- Малышев С.А. Самоучитель VBA. Как это делается в Word, Excel, Access. – СПб.: Наука и техника, 2001. – 496 стр. с ил.