Главная страница «Первого сентября»Главная страница журнала «Информатика»Содержание №5/2008


Предлагаю коллегам

Тестирование в электронных таблицах

Пролог*

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

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

Для создания электронных тестов применяют специальные программные оболочки. Многие учителя разрабатывают тесты в виде электронных страниц с использованием языков HTML и JavaScript. Особенно эффектно выглядят тесты, созданные в приложении MS PowerPoint с применением макросов VBA.

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

Тем не менее в среде MS Excel существует возможность разработки тестов без использования программирования, по эффективности зрительного восприятия не уступающих тестам в MS PowerPoint.

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

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

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

Статья состоит из трех частей. В первой рассматривается разработка набора для тестирования средствами электронных таблиц без использования программирования. Во второй речь идет о том, как оптимизировать и автоматизировать процесс создания и обработки тестов с применением Visual Basic for Application. А в третьей — как использовать готовые проекты, не забивая голову первыми двумя проблемами. Если у вас достаточно забот, кроме Excel и VBA, можете загрузить необходимые файлы по адресу http://www.rosinka.vrn.ru/dinex/tests.htm и смело переходить к третьей части.

Часть первая — Для экспериментаторов

Создание теста вручную

Допущения

Для начала на рабочем листе MS Excel (назовем его “Раб”) создадим таблицу для обработки результатов одного теста. Положим, что количество предлагаемых вариантов ответов на задание может быть от двух до шести, а количество правильных вариантов ответов допускается от одного до пяти. Тогда в первой строке размещаем номера заданий. Следующие шесть строк отводим для отображения результатов выбора. С ячейками этих строк в дальнейшем будут связаны управляющие элементы в соответствии с номером задания и номером варианта предложенного ответа. Свои значения эти элементы передают в виде данных логического типа “ЛОЖЬ”-“ИСТИНА” или целого — номер выбранного ответа.

Код выбранных ответов

Восьмую строку оставим под заголовки, а в девятой строке первая ячейка будет отведена для ссылки на фамилию и имя тестируемого. Если тест начинается с титульного листа с названием “Тест”, на котором эти данные вводятся в ячейку F12, то в ячейку A9 надо будет ввести формулу со ссылкой на нее: =Тест!F22. В последующие ячейки этой строки методом автозаполнения внесем довольно длинную формулу для вычисления кода выбранных ответов:

=ЕСЛИ(ИЛИ(B2=ИСТИНА();B2=ЛОЖЬ();B2=0);
Ч(B2)+Ч(B3)*2+Ч(B4)*4+Ч(B5)*8+Ч(B6)*16+Ч(B7)*32;2^(B2-1)).

Она основана на двоичной арифметике и позволит применять как Флажки, так и Переключатели. Функция Ч() преобразует логические значения в числовые 0 и 1. Записав код в виде двоичного числа, вы легко определите номера выбранных ответов. Они будут соответствовать единицам в порядковой записи. Девятую строку как вариант можно использовать для получения данных о результатах тестирования с последующей обработкой.

Код правильных ответов

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

В пятнадцатую строку протягиванием, начиная с ячейки B15, вводим еще одну длинную формулу для вычисления кода правильных ответов:

=ЕСЛИ(B10>0;2^(B10-1);0)+ЕСЛИ(B11>0;2^(B11-1);0)+
ЕСЛИ(B12>0;2^(B12-1);0)+ЕСЛИ(B13>0;2^(B13-1);0)+
ЕСЛИ(B14>0;2^(B14-1);0)

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

Обработка результатов

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

В ячейку A17 для фамилии и имени тестируемого вводим ту же формулу, что и в ячейку A9. Для сравнения ответов, начиная с ячейки B17 и далее вправо, протягиванием за маркер автозаполнения, вводим формулу =ЕСЛИ(B9=B15;1;0).

В ячейке B18 с помощью формулы =СЧЁТЗ(B1:IV1) (счет непустых значений в заданном диапазоне) произведем подсчет количества всех заданий. Диапазон взят до правой границы листа, чтобы потом без забот можно было изменять число вопросов в тесте хоть до 254.

Число правильных ответов подсчитывается в ячейке B19 с помощью формулы =СЧЁТЕСЛИ(B17:IV17;1) (подсчет единиц в заданном диапазоне).

Получение оценки

Степень

требовательности

Оценки

“2”

“3”

“4”

“5”

k

Число верных ответов в %

1

21

41

61

81

1,5

35

55

72

87

2

45

64

78

90

2,5

53

70

82

92

3

59

74

85

93

Вычисление процента правильных ответов в ячейке B20 не составит труда. А вот для получения итоговой оценки вместо обычно используемой для этого формулы вида =ЕСЛИ(B19<13;2;ЕСЛИ(B19<18;3;ЕСЛИ(B19<23;4;5))) я предпочитаю другую, более простую не только по виду, но и с точки зрения тонкой настройки: =ОКРВВЕРХ(5*(B19/B18)^B21;1). Здесь отношение числа правильных ответов к числу заданных вопросов возводится в степень, которую я называю степенью требовательности, и умножается на 5. Результат округляется до целых значений. Меняя величину показателя степени в ячейке B21, изменяем уровень требований к оценке. Вот таблица, которая показывает процент верных ответов для получения той или иной оценки в зависимости от значения коэффициента требовательности. Разумеется, что вы можете выбрать и другие значения, отличные от указанных.

Для более точной ориентировки можно здесь же создать таблицу-подсказку по аналогии с приведенной, где число правильных ответов, необходимых для получения той или иной оценки, вычисляется по обратной формуле: =ОКРВВЕРХ($B$18*((D$19-1)/5)^(1/$B$21);1).

Защита

Чтобы скрыть номера и коды правильных ответов, а также результаты, можно поступить следующим образом:

— выбрать цвет шрифта в этих ячейках таким же, как и цвет заливки;

— воспользоваться защитой — Сервис — Защита — Защитить лист… — убрать все “галочки” разрешений и при необходимости ввести пароль;

— скрыть рабочий лист от любопытных глаз, выполнив Формат — Лист — Скрыть.

Проблемы оформления

Теперь настало время заняться заготовкой для размещения теста первого задания. Переключимся на другой лист и переименуем его, дав содержательное имя “1”. Формат листа MS Excel позволяет разместить на нем тесты с достаточно большим количеством заданий, однако, на мой взгляд, более выигрышным в зрелищном плане является размещение каждого вопроса на отдельных листах, имена которым можно дать в соответствии с порядковым номером задания, а затем переключаться между ними, щелкая по ярлычкам.

Для оформления листа, наряду с широко применимыми возможностями форматирования текста и ячеек, можно использовать обширный диапазон доступных средств, значительно повышающих зрелищность и эффективность восприятия предлагаемого материала. Точно так же, как в MS Word, в электронных таблицах можно использовать панель рисования и панель WordArt, вставлять в виде графических объектов математические формулы, векторные и растровые изображения. В горизонтальном меню Формат — Лист можно установить его фон и цвет ярлычка, а также скрыть некоторые листы от излишнего любопытства. Далее, выбрав Сервис — Параметры… на вкладке Вид, можно убрать отображение сетки, заголовков строк и столбцов, горизонтальной и вертикальной полос прокрутки. При необходимости тут же можно убрать строку состояния и строку формул. После всех этих преобразований трудно будет поверить, что вы работаете в MS Excel. Однако большинство из предложенных действий можно отложить и на более позднее время, а в первую очередь следует решить вопрос, где и как вы будете размещать текст задания и тексты вариантов ответов. Для этого можно определить соответствующие диапазоны ячеек листа или разместить тексты в надписях или на автофигурах, создав их с помощью панели рисования.

Элементы управления

На следующем шаге займемся элементами управления для выбора ответов. Здесь следует сказать, что в MS Excel флажки и переключатели можно установить двумя разными способами: с помощью Панели элементов управления или с помощью панели Формы. Каждый из них имеет свои достоинства и недостатки. Одни и те же объекты, созданные с помощью разных панелей, отличаются свойствами, способами настройки и даже размерами. Хотя для решения некоторых вопросов, в том числе проблемы размещения нескольких групп переключателей на одном листе, проще использовать элементы управления Visual Basic, остановимся на панели Формы. В пользу этого могут быть приведены следующие аргументы:

— элементы управления этой панели крупнее и лучше воспринимаются зрительно;
— для настройки свойств используется диалоговое окно, в котором все “по-русски”;
— нет необходимости регулярно переключаться из MS Excel в Visual Basic и обратно;
— для группы переключателей необходимо указывать только одну ячейку, в которой будет отображаться не логическое значение, а номер выбранного элемента группы переключателей;
— если вы решите отказаться от универсальности в пользу тестов с выбором только одного правильного ответа, то структуру ранее созданного листа результатов можно сократить как минимум на десять строк, однако все будет исправно работать, даже если вы этого не сделаете.

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

Настройка элементов

Итак, щелкнув правой кнопкой мыши на любой из панелей, выбираем в контекстном меню панель Формы. Нажимаем на ней кнопку Переключатель и при нажатой левой кнопке мышки рисуем на листе прямоугольник. Сделав двойной щелчок по названию переключателя, заменяем его на “1”, а затем с помощью маркеров выделения уменьшаем размеры обрамления до минимальных. Если переключатель не выделяется, нажмите кнопку на Панели рисования и повторите попытку. Двойным щелчком по обрамлению переключателя или по кружку вызовем диалоговое окно Формат элемента управления. На вкладке Элемент управления выберем значение — снят. Установим с помощью флажка Объемное затенение и, нажав кнопку в строке Связь с ячейкой, переключимся на лист результатов, выполнив двойной щелчок по ячейке B2. Появится ссылка Раб!$B$2. Кнопкой развернем диалоговое окно и снова переключимся на лист заготовки первого задания. При необходимости на вкладке Цвета и линии или с помощью Панели рисования можно установить цвет или способ заливки, вид и цвет границы обрамления, и даже использовать меню Тени. Создав и настроив первый переключатель, копируем его, а затем вставляем и распределяем на листе еще пять его копий. При этом сразу же после вставки очередного элемента правим его имя в соответствии с порядковым номером создания и не нарушаем порядок размещения. Дело в том, что у элемента управления может быть три разных или одинаковых названия: одно отображается рядом с самим элементом, другое в виде замещающего текста на вкладке Веб окна Формат элемента управления, а третье в окне Имя левее Строки формул. Однако эти названия не связаны с теми порядковыми номерами, которые присваивает переключателям MS Excel, и с помощью переименования этот порядок нарушить не удастся, поэтому важно ему соответствовать.

Для аккуратного размещения можно на Панели рисования кнопкой включить выделение объектов и, выделив все созданные переключатели, через меню Панели рисования: Рисование – Выровнять/Распределить, выровнять все переключатели по левому краю и распределить по вертикали.

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

Аналогичным образом создаются и настраиваются Флажки. Только в этом случае нет необходимости объединять их с помощью кнопки Группа, что является “плюсом”, даже если вы планируете весь тест разместить на одном листе.

Проблема копирования

Создав заготовку для одного вопроса, будь она с флажками или переключателями, копированием и вставкой через буфер обмена или методом Правка – Переместить/скопировать лист…, можно растиражировать ее на необходимое число заданий. Последний способ лучше тем, что позволяет копировать и подложку листа, которая может быть установлена в виде фона с помощью: Формат – Лист – Подложка…, но вам не удастся создать таким приемом более 55 копий, если вы не работаете в Office 2007.

Счетчик

Пока не закрыта панель Формы, создадим и настроим еще один объект для рабочего листа. Чтобы не вводить значения коэффициента требовательности в ячейку B21 вручную, приспособим для этого счетчик, который нарисуем после щелчка по кнопке . На вкладке “Элемент управления” диалогового окна его свойств установим:

— Минимальное значение – 10;
— Максимальное значение – 10;
— Шаг изменения – 1;
— Связь с ячейкой – $C$21.

Скроем значения в этой ячейке, выбрав цвет шрифта белым, и переместим в нее счетчик. А в ячейку B21 введем формулу =C21/10.

Хлопоты

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

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

Вывод результатов

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

=ЕСЛИ(СЧЁТЕСЛИ(Раб!$B$9:$IV$9;0)=0;Раб!B22;"").

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

Сетевой обработчик

Ссылки

Теперь, когда обрисовалась технология разработки теста, настала пора переходить к обработке результатов тестирования. В предыдущей части уже приходилось из одной ячейки таблицы ссылаться на значение другой ячейки и даже в том случае, если она находится на другом листе данной книги. Многие знают, что в MS Excel можно сделать ссылку на ячейку, которая находится в другой книге. Для этого предварительно откроем эту книгу и из ячейки своей таблицы, набрав с клавиатуры знак равенства и переключившись с помощью панели задач в книгу-источник, щелкнем по нужной ячейке и нажмем клавишу .   Получим формулу в виде: =[Книга2]Лист1!$B$17. А теперь сохраним и закроем вторую книгу. Ссылка в нашей ячейке-приемнике изменилась и приобрела вид:

='C:\Documents and Settings\KAN\Рабочий стол\[Книга2.xls]Лист1'!$B$17

Связи

Откроем в меню Правка – Связи… диалоговое окно Изменение связей и обратим внимание на кнопку Обновить, с помощью которой можно получить самые свежие данные о значении в ячейке-источнике. При этом нет необходимости открывать книгу, в которой она находится. Нажмем кнопку Запрос на обновление связей

Можно оставить предлагаемый вариант. В этом случае при каждом открытии файла будет появляться окно с запросом о необходимости обновления связей. При положительном ответе на этот вопрос не исключено, что вам придется подождать, пока не закончится обновление, прежде чем откроется файл вашей книги. При выборе последнего варианта такие задержки гарантированы, так что, если вам дороги собственные нервы, выберите: “Не задавать вопрос и не обновлять связи”.
А получать самые свежие новости о том, как там дела у ячейки B17, будете с помощью ранее рассмотренной кнопки Обновить.

Есть контакт!

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

='\\U01\Temp\[Книга2.xls]Лист1'!$B$17

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

Автозаполнение с проблемами

Итак, первые данные о состоянии дел с тестированием у учащихся получены. Смело убираем знак доллара перед буквой B в нашей формуле, хватаемся за маркер автозаполнения и тянем вправо… Если у вас включена сеть и она достаточно быстрая, а в положенном месте действительно находятся указанные файлы, то эта операция, возможно, обойдется для вас без хлопот. Скорее же всего ваш компьютер задумается и после многозначительной паузы выдаст, что такой ресурс отсутствует, в вашей дорогой ячейке появится не очень приятное слово #ССЫЛКА, которое придется растиражировать до конца протягиваемого диапазона, изрядно поработав в качестве швейной машинки, нажимая на кнопку Отмена в то и дело открывающемся диалоговом окне Обновить значения. Запаситесь терпением!

Идем по вертикали

Далее понятно, что в следующей строке вместо U01 должно стоять U02 (скорее всего компьютеры вашего класса имеют другие имена, по-другому называется и папка общего доступа, внесите необходимые коррективы). Эти изменения проще всего внести вручную, продолжая с удовольствием щелкать на кнопке Отмена в только что упоминавшемся диалоговом окне. Будет лучше всего, если вы догадаетесь сразу же вместо Книга2 подставить Тест1, а вместо Лист1 — Раб. Этим вы сэкономите значительное количество времени и нервов.

Таких строчек придется создать ровно столько, сколько компьютеров в кабинете информатики, не считая вашего. Но, как правило, количество учащихся в классе превышает число рабочих мест. Для выхода из ситуации можно предложить рассылку учащимся двух одинаковых тестов с разными именами, например, Тест1.xls и Тест2.xls по одному для каждой подгруппы. В этом случае придется сжать нервы в кулак и пройти процедуру размножения ссылок повторно, теперь уже с Тест2 вместо Тест1.

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

Пора-пора-порадуемся!

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

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

Оценка с отсрочкой

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

Проценты

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

— числа правильных ответов (функция СЧЁТЕСЛИ());
— оценки (формула приводилась выше);
— процента верных ответов;
— количества полученных тех или иных оценок (опять СЧЁТЕСЛИ());
— качества знаний;
— среднего балла.

Дерзайте!

Часть вторая — Для фанатов

Макровведение

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

К счастью, в MS Excel имеется возможность облегчить ваши злоключения и переложить многие тяготы на его могучие плечи. Точнее, на плечи интегрированного в Microsoft Office модуля, который называется Visual Basic for Application (VBA). При этом от вас во многих случаях не требуется глубоких познаний в области программирования. Просто щелкните правой кнопкой мыши на любой из панелей и выберите в контекстном меню панель Visual Basic. Затем нажмите на этой панели кнопку Запись макроса, щелкните по кнопке OK в появившемся окне и можете “выделывать кренделя”. Нажав в том же месте кнопку Остановить запись, переместитесь чуть в сторону и кликните по кнопке Выполнить макрос. Вы обнаружите, что она реализует самые смелые желания, повторяя все только что продемонстрированные ваши прихоти. Если теперь воспользоваться кнопкой Редактор Visual Basic, то окажется, что все время, пока вы предавались забавам, за вами неусыпно следили и, более того, протоколировали все ваши шалости. Именно этот “кондуит” вы имеете удовольствие теперь видеть. Велика вероятность того, что все, что там зафиксировано, пока недоступно для вашего понимания. Что ж, не спеша осваивайтесь, продолжайте куролесить и сопоставлять свои действия с соответствующими “протоколами”, которые называются макросами. Постепенно эта “разгульная” жизнь затянет вас в омут, и вы начнете понимать в ней толк. Думаю, что вскоре вы откроете в горизонтальном меню Visual Basic спасительное слово Help и, к своему восторгу, обнаружите, что там все “не по-русски”, но это не станет препятствием для ваших дальнейших проказ. Более того, в Интернете вы отыщете, что такое MSDN и MSDN2 и где они находятся, потому что вы и сами не заметите, как вас затянет в это болото, которое называется VBA, а за грехи надо платить!

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

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

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

Копирование листов

Чтобы решить проблему копирования листов с заданиями, конечно же надо эту процедуру хоть раз зафиксировать в макросе, а затем вставить в цикл и преобразовать примерно к следующему виду:

Sheets("Диз").Copy After := Sheets(s + 2)

— где "Диз" — это имя листа с заготовкой дизайна задания вместе с переключателями или флажками, а s — параметр цикла.

Привязка

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

a$ = "Флажок " & Str(I)

ActiveSheet.Shapes(a$).Select

With Selection.ShapeRange

Y = .Top

X = .Left

W = .Width

H = .Height

. . .

End With

Selection.Delete

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

If Sheets("Титул").Cells(27, s + 3) = "п" Then

ActiveSheet.OptionButtons.Add(X, Y, W, H).Select

Else

ActiveSheet.CheckBoxes.Add(X, Y, W, H).Select

End If

With Selection

.LinkedCell = Replace("Раб!R2C" + Str$(s + 1),

" ", "")

. . .

End With

Столбцы

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

Application.ReferenceStyle = xlR1C1

обратное переключение:

Application.ReferenceStyle = xlA1

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

Function Bc(x As Integer) As String

buk = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

c1 = (x — 1) \ 26

c2 = ((x — 1) Mod 26) + 1

Bc = ""

If c1 > 0 Then Bc = Mid(buk, c1, 1)

Bc = Bc + Mid(buk, c2, 1)

End Function

Переходы

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

Sheets(ActiveSheet.Index + 1).Select

Отключения

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

Application.DisplayAlerts = False

Для включения достаточно изменить значение параметра False на True.

При необходимости отключения обработчика ошибок — а такие ситуации тоже нередки, особенно при работе с файлами — помогает

On Error Resume Next

Обратная операция осуществляется с помощью

On Error GoTo 0

Отсчет

Задать задержку в 10 с можно таким образом:

Application.Wait(Now + TimeValue("0:00:10"))

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

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

Данные – Импорт внешних данных – Импортировать данные…;

— в диалоговом окне выберем предварительно созданный в той же папке, что и тест, пустой файл tm.xls и нажмем кнопку Открыть;

— щелкнем по OK в появившемся окне Выделить таблицу и с помощью кнопки Свойства… в диалоговом окне Импорт данных откроем окно Свойства внешнего диапазона;

— оставим предлагаемое имя, отметим флажки:

  • сохранить определение запроса;

  • фоновое обновление;

  • обновлять каждые;

и установим время обновления 1 мин. Все остальные флажки уберем.

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

Для того чтобы начать отсчет времени, вставим в ячейку B25 рабочего листа формулу =ТДАТА() и отформатируем ее на отображение часов и минут. Часы пошли. Зафиксировать время начала тестирования поможет команда Sheets("Раб").Range("B24").Value = Time

Но здесь возникает одна неприятность: каждую минуту окно вашего теста будет вздрагивать при попытке заполучить несуществующие данные. Во время тестирования с этим можно мириться, но до запуска это неоправданно и может мешать. Кроме того, при рассылке теста необходимо обеспечить наличие в том же месте почти бесполезного файла tm.xls, а при удалении теста не забыть его убрать. Придется эту работу поручить тоже макросу.

Удаление запроса

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

Application.Goto Reference := "tm"
Selection.ClearContents
Selection.QueryTable.Delete
ActiveWorkbook.Names("tm").Delete

Та же проблема в Excel 2007 решается проще:

Application.Goto Reference := "tm"
ActiveSheet.ListObjects("tm").Delete

Работа с файлами

Для работы с файлами, в том числе для создания и удаления спутника tm.xls, первоначально использовался объект FileSearch из класса Application, но потом оказалось, что в Office 2007 он отсутствует, поэтому пришлось пойти другим путем:

'Установить путь к данному файлу

P$ = ActiveWorkbook.Path

'Открыть папку с данным файлом

Set fs = CreateObject("Scripting.

FileSystemObject")

Set f = fs.GetFolder(P$)

Set fc = f.Files

'Проверить, нет ли там уже такого файла

k = 0

For Each f1 In fc

If f1.Name = "tm.xls" Then k = 1

Next

'если нет, то создать и закрыть

If k = 0 Then

Workbooks.Add

ActiveWorkbook.SaveAs Filename := P$ & "\tm.xls"

ActiveWindow.Close

End If

' Установить атрибут скрытый

SetAttr P$ & "\tm.xls", 2

Чтобы удалить файл, из которого импортируются данные, применим

Kill P$ & "\tm.xls"

Центрирование

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

If ActiveWindow.Width > 756 Then

Columns("A:A").ColumnWidth =

(ActiveWindow.Width — 756) / 10.5 + 6

Else

Columns("A:A").ColumnWidth = 6

End If

Excel и VBA

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

'Подсчет числа строк

ActiveSheet.Range("A1").FormulaR1C1 =

"=MAX(R[7]C:R[200]C)"

k_str = Range("A1").Value

Range("A1").Value = ""

Многие вопросы можно решить с помощью программирования, но не забывайте, что “Excel” означает “превосходный”, а потому, работая в этом приложении, старайтесь в первую очередь реализовывать свои замыслы с помощью Его Превосходительства, а потом уж прибегая к средствам VBA. Не забывайте, кто главный.

Часть третья — Для юзеров

Предполагается, что вы заинтересовались предложенным материалом и каким-то способом (усердно изучив, бегло пробежав или перескочив) добрались до этого места и уже загрузили или вот-вот загрузите из Интернета по вышеуказанному адресу готовенькие “Генератор шаблонов для тестирования” — GSTest.xls и “Менеджер тестирования” — MTest.xls.

Условия применения

Операционная система: Windows 2000, Windows XP. Приложения: MS Excel XP, MS Excel 2003, адаптировано к MS Excel 2007. В других версиях проверка не проводилась.

Предварительная подготовка

На всех компьютерах учащихся в папке Общие документы необходимо создать папки с одинаковым названием, например, Temp, открыть общий доступ к этим папкам, разрешить изменение файлов по сети, а ярлыки вывести на рабочий стол.

Восстановление элементов

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

Создание теста

Подготовьте или выберите тест. Определитесь:

— Сколько в нем заданий?

— Какое максимальное число вариантов ответов вы собираетесь предложить?

— Будете ли вы использовать задания с множественным выбором?

— Если да, то решите номера каких заданий?

Работа над дизайном

Откройте файл GSTest.xls. Просмотрите варианты оформления электронного теста на рабочих листах Диз1–Диз8 и выберите подходящий. При необходимости переделайте приглянувшийся образец дизайна по своему вкусу. Элементы оформления можно перемещать, перекрашивать, изменять их размеры, удалять, заменять, вставлять новые объекты. Допускаются любые операции по форматированию шрифтов.

Предупреждения!

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

Не удаляйте флажки, кнопку “Далее” и элементы под ответами! Все лишнее можно убрать в готовом шаблоне, не нарушая при этом порядка чередования вариантов ответов.

Если в процессе работы над дизайном вам пришлось отправлять на задний план какой-либо элемент, то выполните следующее: выделите предупреждающий знак “Внимание, опасность!” под ответами и, выбрав в контекстном меню “Порядок”, переместите его на задний план. Затем то же самое проделайте с надписью “Выберите все правильные ответы” и кнопкой “Далее”, не нарушая очередности.

Если число заданий в вашем тесте больше 55, то рекомендуется выполнить Формат — Лист — Удалить фон, а затем, выделив диапазон ячеек или весь лист, сделать заливку подходящим цветом. В MS Excel 2007 ограничение на 55 копий снято.

Настройка параметров

На листе “Титул” счетчиком установите число заданий в шаблоне теста (при переходе через 55 появляется предупреждение о невозможности использования фона в виде подложки). С помощью переключателей выберите вариант дизайна и вариант использования управляющих элементов: с флажками, переключателями или комбинированный. В последнем случае необходимо щелчком по буквам “п” изменить значения на “ф” в номерах тех заданий, в которых будет использоваться множественный выбор. Ошибки можно исправить повторным щелчком.

Создание и сохранение

Нажатие на кнопку “Создать” приводит в действие макрос, реализующий процесс создания шаблона для теста согласно выбранным вами параметрам и привязки управляющих элементов к соответствующим ячейкам таблицы результатов тестирования. В завершение появляется диалоговое окно, предлагающее сохранить созданный шаблон в той же папке, что и исходный файл генератора с именем TestN.xls, где N — число на единицу большее, чем количество файлов в данной папке, имена которых начинаются с Test.

После этой операции файл GSTest.xls остается неизменным, а в только что созданном файле шаблона происходит переключение на лист “Рез”. К работе над ним лучше вернуться после заполнения листов с заданиями.

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

В блоке “Текст задания” наберите или вставьте само задание. Если размеры блока не соответствуют объему текста, измените высоту блока или измените размер шрифта. Аналогично поступите с блоками вариантов ответов. При необходимости выделите и сместите вниз блоки ответов вместе с флажками или переключателями и вставьте или создайте необходимые иллюстрации в виде рисунков, схем, чертежей или таблиц. Лишние блоки и элементы управления удалите.

Завершив заполнение теста, переходим на лист обработки результатов тестирования.

Ввод условий тестирования

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

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

Установите время тестирования (до 180 мин.). Выполните прогон теста, чтобы убедиться, что вы не допустили ошибок.

Отметьте при необходимости установку атрибутов файлов после тестирования.

Введите (и не забудьте) пароль защиты. При этом станет недоступной для просмотра и изменения информация о правильных ответах и используемые формулы.

Чтобы скрыть макросы от просмотра и редактирования, нужно перейти в редактор Visual Basic, в меню Tools — VBAProject Properties… выбрать в диалоговом окне вкладку Protection и ввести пароль.

Завершение

Если все готово к тестированию, нажмите кнопку “Тест готов”. При этом все листы, кроме титульного, станут скрытыми. В случае необходимости быстро отобразить все листы теста, в том числе и служебные, щелкните по слову “Тест” на титульном листе.

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

Тестирование

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

Работа с Менеджером тестирования

Откройте файл MTest.xls. Внесите на листе “Титул” сетевые имена компьютеров учащихся и имя папок свободного доступа на них. Введите названия файлов с подготовленными тестами согласно образцу. Имена заносятся, начиная с первой ячейки, без пропусков.

Рассылка файлов с тестами

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

Установка атрибутов

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

Удаление файлов

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

Создание предварительного отчета

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

На листе “Рез” заполните необходимые данные в заголовке и укажите число учащихся в классе в соответствующей ячейке под таблицей.

Переключившись на лист “Титул”, с помощью счетчика введите число заданий в тесте.

Отметьте флажками файлы, предназначенные для проверки, и компьютеры, на которых находятся эти файлы.

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

После нажатия кнопки “Создать” сначала произойдет переключение на лист “Код”, на котором будет отображаться процесс подключения к компьютерам учащихся и заполнения ячеек таблицы данными из файлов тестов, а затем на лист “Рез” со сформированным предварительным отчетом. Ячейки таблицы будут содержать ссылки или данные, в зависимости от возможности доступа к тестам.

Если вы намереваетесь тестировать учащихся нескольких классов на разных тестах, то создайте копию только что созданного предварительного отчета, так как формирование следующего будет производиться на основе листа “Рез”. Копия отчета зависит только от листа “Код”, и никакие изменения параметров на титульном листе на ней не отражаются. Впрочем, и лист “Рез” обладает такой же независимостью, которая нарушается только во время работы макроса, запускаемого кнопкой “Создать”. Предполагается, что в следующей версии лист “Код” будет интегрирован в предварительные отчеты для полной их автономности, что позволит расширить возможности менеджера.

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

Обновление данных

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

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

Фиксация отчета

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

Надежды**

Уважаемые исследователи, фанатики и просто пользователи!

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

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

Надеюсь, что предложенные “Генератор тестов” и “Менеджер тестирования” станут хорошим подспорьем в вашей работе для подготовки электронных заданий, сбора, проверки, анализа и документирования их результатов.

Удачи вам!

Использованные источники информации

1. Справочная система Microsoft Excel 2003.

2. Справочная система Visual Basic for Application 6.5.

3. http://msdn.microsoft.com/library/

4. http://msdn2.microsoft.com/ru-ru/library/


* Содержание этой статьи непосредственно не связано с одноименным языком логического программирования, в данном случае значение этого термина — введение, вступление, зачин.

А.. Н.. Комаровский,
Россошанская школа-интернат

TopList