Использование языка программирования Visual Basic for Applications VBA для обработки результатов 2

Кемеровский Государственный Университет



Кафедра экспериментальной физики











Курсовая работа

«Использование языка программирования Visual Basic for Applications (VBA) для обработки результатов АСТ - тестирования»









Панасенко Н.С., студент

3 курса группы Ф-053



Научный руководитель: Павлова Т.Ю.

Оценка:

Роспись:





Кемерово, 2008


Оглавление



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

Теория тестирования……………………………………………………….4

Тест как система заданий……………………………………………...…..4

Понятие эффективности теста………………………………………..…...7

Качество тестовых заданий……………………………………….….…..10

Проверка качества тестовых заданий………………………………..…..10

Матрица результатов………………………………………………….…..11

Работа с матрицей результатов…………………………………………..13

Современный подход к понятию «трудность»……………………….....17

Вариация, дисперсия баллов и дифференцирующая способность…….18

Visual Basic for Applications (VBA)……………………………………/..21

Объектные модели …………………………………………………..…...22

Основы VBA…………………………………………………………..…..22

Классы объектов……………………………………………………...…...23

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

Методы………………………………………………………………..…...26

Редактор VBE………………………………………………………..……26

Иерархия объектов…………………………………………………..……27

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

Методы объектов………………………………………………………...30

Практическая часть……………………………………………………….32

Заключение ……………………..………………………..………………38

Список использованной литературы…………………………………….39

Приложения……………………………………………………………….40


1.Введение



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

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

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

Целью данной работы будет являться изучение теории тестирования, методов определения надёжности тестовых результатов, а также написание программы для обработки результатов АСТ – тестирования. Эта система используется в нашем ВУЗе для проведения тестирования. 

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


2. Теория тестирования



2.1 Тест как система заданий



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

Тест состоит из: 

1)Заданий

2)Правил их применения; 

3)Оценок за выполнение каждого задания; 

4)Рекомендаций по интерпретации тестовых результатов. 

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

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

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

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

Требование экономии времени становится естественным в массовых процессах, каковым и стало образование.[1] Одно из актуальных направлений современной организации тестового контроля- это индивидуализация контроля, приводящая к значительной экономии времени тестирования. Контроль ведется с помощью заранее откалиброванных, по трудности, заданий. 

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

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

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

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

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

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

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

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



2.2 Понятие эффективности теста



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

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

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

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

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

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

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

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

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

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

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

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


3.Качество тестовых заданий



3.1 Проверка качества тестовых заданий



Работа по превращению заданий в тестовой форме в тестовые задания требует опоры на теорию тестов.[3] 

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

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

 .= 1. Если не справляется, то дается ноль баллов. 

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

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


3.2 Матрица результатов



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

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

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

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

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

Рассмотрим пример матрицы (таблица 1), в которой приведены результаты проверки знаний 13-ти испытуемых по 10-ти заданиям().



№

1

2

3

4

5

6

7

8

9

10

1

1

1

1

0

1

1

1

1

1

1

2

1

1

0

1

1

1

1

1

1

0

3

1

1

1

1

0

1

1

0

1

0

4

1

1

1

1

0

1

0

1

0

0

5

1

1

1

1

1

1

0

0

0

0

6

1

1

1

1

0

0

1

0

0

0

7

1

1

0

1

1

0

1

0

0

0

8

1

1

1

1

1

0

0

0

0

0

9

1

0

1

0

1

1

0

0

0

0

10

0

1

1

0

0

0

0

1

0

1

11

1

1

1

0

0

0

0

0

0

0

12

1

1

0

0

0

0

0

0

0

0

13

1

0

0

0

0

0

0

0

0

0



Таблица 1. Матрица результатов



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



3.3 Работа с матрицей результатов



Для проверки тестовых свойств заданий тестовой формы и превращения части из них в тестовые задания, с данными (таблица 1) делается ряд расчетов. Результаты представлены в таблице 2.



































1

1

1

1

0

1

1

1

1

1

1

9

0,9

0,1

9

2,19722

2

1

1

0

1

1

1

1

1

1

0

8

0,8

0,2

4

1,38629

3

1

1

1

1

0

1

1

0

1

0

7

0,7

0,3

2,333

0,8473

4

1

1

1

1

0

1

0

1

0

0

6

0,6

0,4

1,5

0,40547

5

1

1

1

1

1

1

0

0

0

0

6

0,6

0,4

1,5

0,40547

6

1

1

1

1

0

0

1

0

0

0

5

0,5

0,5

1

0

7

1

1

0

1

1

0

1

0

0

0

5

0,5

0,5

1

0

8

1

1

1

1

1

0

0

0

0

0

5

0,5

0,5

1

0

9

1

0

1

0

1

1

0

0

0

0

4

0,4

0,6

0,667

-0,4055

10

0

1

1

0

0

0

0

1

0

1

4

0,4

0,6

0,667

-0,4055

11

1

1

1

0

0

0

0

0

0

0

3

0,3

0,7

0,429

-0,8473

12

1

1

0

0

0

0

0

0

0

0

2

0,2

0,8

0,25

-1,3863

13

1

0

0

0

0

0

0

0

0

0

1

0,1

0,9

0,111

-2,1972



12

11

9

7

6

6

5

4

3

2

65

 

 

 

 



1

2

4

6

7

7

8

9

10

11

 

 

 

 

 



0,923

0,846

0,692

0,538

0,462

0,462

0,385

0,308

0,231

0,154

5

 

 

 

 



0,077

0,154

0,308

0,462

0,538

0,538

0,615

0,692

0,769

0,846

 

 

 

 

 



0,071

0,13

0,213

0,249

0,249

0,249

0,237

0,213

0,178

0,13

 

 

 

 

 



0,083

0,182

0,444

0,857

1,167

1,167

1,6

2,25

3,333

5,5

 

 

 

 

 



-2,48

-1,7

-0,81

-0,15

0,154

0,154

0,47

0,811

1,204

1,705

 

 

 

 

 



Таблица 2. Матрица результатов с расчётами

В этой матрице проведено два упорядочения. 

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

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

В таблице 2 приводятся и основные статистические данные, которые принимаются во внимание на первом этапе эмпирической проверки качества заданий. 

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

Трудность задания может определяться двояко: 

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

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

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

Больше правильных ответов оказалось в первом задании ( = 12), это значит , что оно самое легкое в матрице. 

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

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

 

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

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

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

 

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

 

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

 (4)

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


3.4 Современный подход к понятию «трудность».



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

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

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

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


3.5 Вариация, дисперсия баллов и дифференцирующая способность.



Если на какое-то задание правильно отвечают все тестируемые, то такое задание становится не тестовым. Испытуемые отвечали на него одинаково; между ними нет вариации. Соответственно, по данному заданию в матрице будут стоять одни единички. 

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

Удобной мерой вариации является значение дисперсии баллов, обозначаемой символом  . Для заданий, в которых используется только дихотомическая оценка (1 или 0), мера вариации определяется по сравнительно простой формуле: 

 (5) 

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

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

 (6) 

Для данных таблицы 2: 

 (7)

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

Для тестовых баллов в столбце  табл. на рис.2 дисперсия вычисляется по формуле: 

 (8) 

При N, равном тринадцати испытуемым, дисперсия равна: 

 (9)

Для удобства в интерпретации тестовых результатов вместо дисперсии часто используется стандартное отклонение тестовых баллов от средней арифметической. Оно обозначается символом Sy и вычисляется как корень квадратный из значения sy2. 

 (10)

Стандартное отклонение Sy является общепринятой мерой вариации тестовых баллов. 

Подставляя наши данные, получаем 

 (11)

Дифференцирующая способность является четвертым требованием к тестовым заданиям. 

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


4. Visual Basic for Applications (VBA)



Программирование в Excel , в основном, сводится к управлению объектами. Эта задача выполняется с помощью инструкций, введённых на языке, понятном Excel . 

Visual Basic For Application ( далее VBA ) – немного упрощённая реализация языка программирования Visual Basic , встроенная в линейку продуктов Microsoft Office (включая версии для Mac OS), а так же во многие другие программные пакеты, такие как AutoCAD, WordPerfect и ESRI ArcGIS. VBA покрывает и расширяет функциональность ранее использовавшихся специализированных макро-языков, таких как WordBasic.

VBA является интерпретируемым языком. Как и следует из его названия, VBA близок к Visual Basic, но может выполняться лишь в рамках приложения, в которое он встроен. Кроме того, он может использоваться для управления одним приложением из другого, с помощью OLE Automation (например, таким образом можно создать документ Word на основе данных из Excel). В будущем Microsoft планирует заменить VBA на Visual Studio Tools for Applications (VSTA) — инструментарий расширения функциональности приложений, основанный на Microsoft .NET.[6]

VBA в настоящее время входит в состав всех приложений Microsoft Office и даже приложений других компаний. Следовательно, овладев VBA для Excel, можно сразу перейти к созданию макросов для других программных продуктов Microsoft (равно, как и приложений других компаний). Более того, можно создавать полноценные программные продукты, одновременно использующие функции самых разных приложений.


4.1 Объектные модели



Секрет использования VBA заключается в правильном понимании объектной модели в каждом отдельном приложении. Следует отметить, VBA всего лишь управляет объектами, а у каждого программного продукта (Excel, Word, Access, PowerPoint и т.п.) своя объектная модель. Приложением можно управлять программным образом только с помощью объектов, которые представлены в этом приложении.

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



4.2 Основы VBA



Предназначение VBA: 

1.Действия в VBA осуществляются в результате выполнения кода VBA.

2. Разработчик создаёт (или записывает) программу VBA, которая сохраняется в модуле VBA

Модуль VBA состоит из процедур.

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

Sub Test ()

Sum =1+1

MsgBox "Ответ: " & Sum 

End Sub

Кроме процедур Sub, в модуле VBA может использоваться второй тип процедур — функции.

Процедура функции возвращает одно значение (или массив). Функция может быть вызвана из другой процедуры VBA или использоваться в формуле рабочего листа. Ниже приведен пример функции с названием AddTwo:

Function AddTwo(arg1, arg2) 

AddTwo = arg1 + arg2 

End Function

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



4.3 Классы объектов



Классы объектов в VBA организованы в иерархическую структуру.

Объекты могут быть контейнерами для других объектов. Например, Excel — это объект под названием Application, он содержит другие объекты, например, Workbook (Рабочая книга). 

Объект Workbook может состоять из других объектов, например, Worksheet (Рабочий лист) и Chart (Диаграмма). 

Объект Worksheet также содержит объекты, например, Range (Диапазон), PivotTable (Сводная таблица) и т.д. Организацию таких объектов называют объектной моделью Excel.

Одинаковые объекты формируют коллекцию.

Например, коллекция Worksheets состоит из всех рабочих листов конкретной рабочей книги, а коллекция CommandBars — из всех объектов CommandBar. Коллекции — это объекты в себе.



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

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

Application. Workbooks(«Книга1.xls»)

Это ссылка на рабочую книгу Книга1.xls в коллекции Workbooks. Коллекция Workbooks находится в объекте Application. Переходя на следующий уровень, можно сослаться на лист под названием «Лист1» в книге Книга1.xls: 

Application. Workbooks («Книга1.хls») .Worksheets («Лист1»)

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

Application. Workbooks(«Книга1.xls»).Worksheets(«Лист1»).Range(«А1»)

При опущенной ссылке на объект Excel по умолчанию используются активные объекты. Если книга Лист1 — активная рабочая книга, то предыдущую ссылку можно упростить: Worksheets («Лист1»).Range(«А1»)

Если лист «Лист1» — активный, то ссылку можно упростить еще больше:

Range(«A1») 



4.4 Свойства объектов



Свойство можно считать параметром или настройкой объекта. Например, объект диапазона имеет такие свойства, как Value (Значение) и Name (Имя). Объект диаграммы обладает такими свойствами, как HasTitle (Заголовок) и Туре (Тип). Разработчик вправе использовать VBA, чтобы задать свойства объектов и их изменить.

Свойства в программном коде отделяются от названия объекта точкой.

Например, можно сослаться на значение в ячейке А1 листа «Лист1» следующим образом:

Worksheets («Лист1»).Range(«А1»).Value 

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

Чтобы присвоить значение ячейки А1 листа Лист1 переменной с названием Interest, можно использовать следующий оператор VBA:

Interest = Worksheets («Лист1»).Range («А1») .Value 



4.5 Методы



У объектов есть методы. 

Метод - это действие, которое выполняется над объектом. Например, один из методов объекта Range — ClearContents. Этот метод удаляет содержимое диапазона ячеек.

Методы вводятся после названия объекта с методом, в роли разделителя выступает точка.

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

Range(«А1») .ClearContents



4.6 Редактор VBE



В Excel 5 и Excel 95 модуль VBA записывался на отдельном листе рабочей книги. Начиная с версии Excel 97t модули VBA уже не представляются в виде листов рабочей книги. Вместо этого для работы и просмотра модулей VBA используется редактор Visual Basic (VBE — Visual Basic Editor).

Модули VBA все еще сохраняются вместе с файлами рабочей книги; просто они не видны до тех пор, пока не запущен редактор VBE.

VBE— это отдельное приложение, запускающееся в Excel. Программа сама выполняет всю операцию по запуску VBE, когда это необходимо, VBE не может запускаться отдельно от Excel; для запуска VBE используется только Excel.

Во время работы в Excel перейти к окну VBE с помощью одного из следующих способов.

1)Нажать <AU+F1

2)Выбрать команду Сервис=>Макрос=>Редактор Visual Basic.

3)Щелкнуть на кнопке Редактор Visual Basic, расположенной на панели инструментов Visual Basic.



4.7 Иерархия объектов



Объект Application (то есть Excel) содержит другие объекты. Ниже приведено несколько примеров объектов, которые находятся в объекте Application:

Workbooks (коллекция всех объектов Workbook — рабочих книг);

Windows (коллекция всех объектов window — окон);

Addlns (коллекция всех объектов Addln — надстроек).

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

Worksheets (коллекция объектов Worksheet — рабочих листов);

Charts (коллекция объектов Chart — диаграмм);

Names (коллекция объектов Name — имен).

Каждый из этих объектов, в свою очередь, может содержать другие объекты. Коллекция Worksheets состоит из всех объектов Worksheet рабочей книги Workbook. Объект Worksheet включает другие объекты, среди которых следующие;

Chartobjects (коллекция объектов Char tobject — элементов диаграмм);

Range — диапазон;

PageSetup — параметры страницы;

PivotTables (коллекция объектов PivotTable — сводных таблиц).

Одной из ключевых концепций в программировании на языке VBA являются коллекции. Коллекция — это группа, объектов одного класса [и сама коллекция тоже является объектом). Как указывалось выше: Workbooks — это коллекция всех открытых в данный момент объектов Workbook. Worksheets — коллекция всех объектов Worksheet, которые содержатся в конкретном объекте Workbook. Разработчик может одновременно управлять целой коллекцией объектов или отдельным объектом этой коллекции. Чтобы сослаться на один объект из коллекции, необходимо ввести название или номер объекта в скобках после названия коллекции:

Worksheets («Лист1»)

Если лист «Лист1» — это первый рабочий лист в коллекции, то можно использовать следующую ссылку: 

Worksheets (1) 

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

Worksheets (2)

Кроме того, существует коллекция с названием Sheets, состоящая из всех листов рабочей книги, рабочих листов и листов диаграмм. Если «Лист1» — первый лист в книге, то на него можно сослаться так

Sheets (1)


4.8 Свойства объектов



Все объекты обладают свойствами. Например, объект Range обладает свойством с названием Value. Например, можно создать оператор VBA, чтобы отобразить свойство Value или задать свойству Value определенное значение. Ниже приведена процедура» использующая функцию VBA MsgBox для отображения окна, в котором представлено значение ячейки А1 листа Лист! активной рабочей книги. 

Sub ShowValue()

HsgSox Worksheets(«Лист1»).Range(«А1»).Value

End Sub

Код предыдущего примера отображает текущее значение свойства Value для конкретной ячейки — А1 рабочего листа Лист1 активной рабочей книги. Однако если в активной книге отсутствует лист с названием Лист1, то макрос выдаст ошибку.

MsgBox — полезная функция, часто используемая для отображения результатов выполнения операторов VBA. 

Также разработчик вправе изменять свойство Value . Ниже приведена процедура по изменению значения ячейки А1 путем определения значения свойства Value:

Sub ChangeValueO

Worksheets["Лист1"),Range("Al").Value = 123 

End Sub

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

Многие объекты имеют свойство по умолчанию. Для объекта Range свойством по умолчанию является Values. Следовательно, выражение .Value в приведенном выше коде можно опустить, и ничего не изменится. Однако лучше включать ссылку на свойство, даже если оно используется по умолчанию.



4.9 Методы объектов



Кроме свойств, объекты имеют методы. Простой пример - использование метода Clear по отношению к диапазону ячеек. После выполнения этой процедуры ячейки А1:СЗ листа Лист1 станут пустыми, и дополнительное форматирование ячеек будет удалено.

Sub SapRange ()

Worksheets(«Лист1»).Range(«Al:C3»).Clear 

End Sub

Если необходимо удалить значения в диапазоне, но оставить форматирование, можно использовать метод ClearContents объекта Range.

Многие методы получают аргументы, определяющие выполняемые над объектом действия более детально. Далее приводится пример, в котором ячейка А1 копируется в ячейку В1 с помощью метода Сору объекта Range.

В данном примере метод Сору получает один аргумент (адрес ячейки, в которую следует скопировать данные):

Sub CopyOnet ()

Worksheets( «Лист1») .Range(«Al») .Copy _ 

Worksheets(«Лист1»).Range(«В1») 

End sub 


5.Практическая часть



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

Поэтому на данном этапе работы было начато написание кода на языке Visual Basic for Applications с использованием табличного редактора Microsoft Excel.

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

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

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

В приложении 1 содержится код основной программы с комментариями (записаны после знака апострофа «’»).

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


Ниже представлена блок – схема программы:





Начало





Процедура выбора пользователем файла для дальнейшего анализа





Определение имени файла и пути к нему





Определение количества рабочих листов  в файле, количества тестируемых





Открытие импортированного файла и копирование данных из него в текущий файл







Закрытие импортированного пользователем файла без сохранения изменений







Сортировка скопированных данных



Построение кривой зависимости доли правильных ответов от числа вопросов







Конец



Описание работы программы по анализу результатов теста.



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

Сервис=>Макрос=>Макросы 

Нажав комбинацию клавиш Alt+F8

как показано на рисунке 1.

Затем, в появившемся диалоговом окне «Макрос», выбрать Test и нажать кнопку «Выполнить», как показано на рисунке 2:

После нажатия кнопки «Выполнить» начнётся выполнение кода макроса и пользователь увидит сообщение-приветствие и просьбу выбрать файл для анализа:

Затем появляется пользовательское окно, в котором пользователь должен указать путь к файлу как показано на рис.4:

После того, как пользователь выберет файл начнётся выполнение макроса, при этом файл, выбранный пользователем, откроется. Затем из импортированного файла будут скопированы необходимые данные в текущий файл, название которого «Тест.xls». По завершении копирования будут произведены необходимые вычисления. Затем появится окно, в котором будет показано время выполнения макроса как на рисунке 5:

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

В дальнейшем планируется осуществить вывод полученных результатов в отдельный файл с последующим сохранением, оформление в виде документа приложения Microsoft Word или составления презентации на основе Microsoft PowerPoint


6. Заключение



Изучена система тестирования АСТ и принципы формирования ею результатов тестирования.

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

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

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

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

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

Планируется осуществить сбор результатов, содержащий показатели надёжности тестовых заданий с последующим представлением в виде документа на базе Microsoft Word преподавателю с целью дальнейшей корректировки содержания теста. 


7. Список использованной литературы



1. Аванесов В.С. Форма тестовых заданий. М.: Центр тестирования, 2005

2. Аванесов В.С. Тесты в социологическом исследовании. М.: Наука , 1982

3. Аванесов В.С. Научные проблемы тестового контроля знаний. М. Иссл. Центр проблем качества подготовки специалистов. М.: 1994

4. Яноши Л. Теория и практика обработки результатов измерений. М.: Мир, 1965

5. Пособия «Композиция тестовых заданий». М.: Центр Тестирования. 2002

6. www.wikipedia.org.ru/VBA

7. http://bit.pirit.info/forum/index.php

8. Уокенбах Дж. Профессиональное программирование на VBA в Excel 2002. М.: Диалектика, 2003

9. Берлинер Э.М. Microsoft Office 2003

10. Мюррей К. Microsoft Office 2003. Новые горизонты

11. Кузьмин В. Microsoft Office 2003. Учебный курс


8.Приложения



Приложение 1: Код основной программы

Sub Test()

Dim FNXLS As String 'Путь к импортированному файлу

Dim FNO As String 'Название импортированного файла

Dim StartTime As Date 'Время начала модуля

Dim EndTime As Date 'Время окончания работы модуля

Dim CountOfSheets As Integer

Dim CountOfUsers As Integer

Dim Fn1 As String

Dim i As Integer 'Переменная - счётчик

Dim j As Integer

Dim n1 As Integer

Dim k As Integer

Fn1 = "Тест.xls"

Dim q1 As Integer

Dim q2 As Integer

Dim q3 As Integer



ОСНОВНАЯ ЧАСТЬ



GreetMe4

FNXLS = FileNameXLS

If FNXLS = " " Then Exit Sub

StartTime = Timer

FNO = FileNameOnly(FNXLS)

MsgBox "Работаем с файлом: " & FNO

Workbooks.Open FNO 'Открытие рабочей книги с названием, соответствующим значению переменной FNO на чтение

CountOfSheets = Sheets.Count 'Определение количества листов в книге

CountOfUsers = Num(FNO)

Workbooks(Fn1).Worksheets(1).Range("A1:IV256").Clear

Workbooks(FNO).Sheets(1).Cells(2, 2).Copy Workbooks(Fn1).Sheets(1).Cells(2, 2)

Workbooks(FNO).Sheets(1).Cells(3, 2).Copy Workbooks(Fn1).Sheets(1).Cells(3, 2)

Workbooks(FNO).Sheets(1).Cells(4, 2).Copy Workbooks(Fn1).Sheets(1).Cells(4, 2)

Workbooks(Fn1).Sheets(1).Cells(6, 1) = "Вопрос" ' Оформление конечного файла

Workbooks(Fn1).Sheets(1).Cells(7, 1) = "Кол-во"

Workbooks(Fn1).Sheets(1).Cells(8, 1) = "Ri"

Workbooks(Fn1).Sheets(1).Cells(9, 1) = "Ri/N"

Workbooks(Fn1).Sheets(1).Cells(11, 1) = "Вопрос"

Workbooks(Fn1).Sheets(1).Cells(12, 1) = "Кол-во"

Workbooks(Fn1).Sheets(1).Cells(13, 1) = "Ri"

Workbooks(Fn1).Sheets(1).Cells(14, 1) = "Ri/N"

Workbooks(Fn1).Sheets(1).Cells(17, 1) = "Вопрос"

Workbooks(Fn1).Sheets(1).Cells(17, 2) = "Кол-во"

Workbooks(Fn1).Sheets(1).Cells(17, 3) = "Ri"

Workbooks(Fn1).Sheets(1).Cells(17, 4) = "Ri/N"

Workbooks(Fn1).Sheets(1).Cells(17, 7) = "Кол-во"

Workbooks(Fn1).Sheets(1).Cells(17, 8) = "Процент"



n1 = 2

n = CountOfUsers ' Количество учащихся в группе

' Копирование данных а текущий файл

k = 1 

For i = 1 To CountOfSheets

 For j = 1 To 256

 If j = 255 Then k = 0

 If Workbooks(FNO).Sheets(i).Cells(n + 1 + 6, j + k) > 0 Then Workbooks(FNO).Sheets(i).Cells(n + 1 + 6, j + k).Copy _

 Workbooks(Fn1).Sheets(1).Cells(7, n1)

 If Workbooks(FNO).Sheets(i).Cells(n + 1 + 6, j + k) > 0 Then Workbooks(FNO).Sheets(i).Cells(6, j + k).Copy _

 Workbooks(Fn1).Sheets(1).Cells(6, n1)

 If Workbooks(FNO).Sheets(i).Cells(n + 1 + 6, j + k) > 0 Then Workbooks(FNO).Sheets(i).Cells(n + 2 + 6, j + k).Copy _

 Workbooks(Fn1).Sheets(1).Cells(8, n1)

 If Workbooks(FNO).Sheets(i).Cells(n + 1 + 6, j + k) > 0 Then n1 = n1 + 1

 Next j

 Next i

n1 = n1 - 1 - 7

For i = n1 + 2 To 256

 Workbooks(Fn1).Sheets(1).Cells(6, i).Clear

Next i



For i = 2 To n1 + 1

 q1 = Workbooks(Fn1).Sheets(1).Cells(6, i)

 q2 = Workbooks(Fn1).Sheets(1).Cells(7, i)

 q3 = Workbooks(Fn1).Sheets(1).Cells(8, i)

 Workbooks(Fn1).Sheets(1).Cells(11, i) = Workbooks(Fn1).Sheets(1).Cells(6, n1 + 3 - i)

 Workbooks(Fn1).Sheets(1).Cells(12, i) = Workbooks(Fn1).Sheets(1).Cells(7, n1 + 3 - i)

 Workbooks(Fn1).Sheets(1).Cells(13, i) = Workbooks(Fn1).Sheets(1).Cells(8, n1 + 3 - i)

 Workbooks(Fn1).Sheets(1).Cells(11, n1 + 3 - i) = q1

 Workbooks(Fn1).Sheets(1).Cells(12, n1 + 3 - i) = q2

 Workbooks(Fn1).Sheets(1).Cells(13, n1 + 3 - i) = q3

Next i



For i = 2 To n1 + 1

 Workbooks(Fn1).Sheets(1).Cells(9, i) = Workbooks(Fn1).Sheets(1).Cells(8, i) / Workbooks(Fn1).Sheets(1).Cells(7, i)

 Workbooks(Fn1).Sheets(1).Cells(14, i) = Workbooks(Fn1).Sheets(1).Cells(13, i) / Workbooks(Fn1).Sheets(1).Cells(12, i)

Next i

 

For i = 1 To n1

 Workbooks(Fn1).Sheets(1).Cells(11, i + 1).Copy Workbooks(Fn1).Sheets(1).Cells(17 + i, 1)

 Workbooks(Fn1).Sheets(1).Cells(12, i + 1).Copy Workbooks(Fn1).Sheets(1).Cells(17 + i, 2)

 Workbooks(Fn1).Sheets(1).Cells(13, i + 1).Copy Workbooks(Fn1).Sheets(1).Cells(17 + i, 3)

 Workbooks(Fn1).Sheets(1).Cells(17 + i, 4) = Workbooks(Fn1).Sheets(1).Cells(17 + i, 3) / Workbooks(Fn1).Sheets(1).Cells(17 + i, 2)

Next i



For i = 0 To 9

 Workbooks(Fn1).Sheets(1).Cells(18 + i, 7) = 0

 Workbooks(Fn1).Sheets(1).Cells(18 + i, 8) = (i + 1) * 10

Next i



For i = 1 To n1

 If Workbooks(Fn1).Sheets(1).Cells(17 + i, 4) = 0 Then Workbooks(Fn1).Sheets(1).Cells(18, 7) = Workbooks(Fn1).Sheets(1).Cells(18, 7) + Workbooks(Fn1).Sheets(1).Cells(17 + i, 2)

Next i



For j = 0 To 9 Step 1

 For i = 1 To n1

 If Workbooks(Fn1).Sheets(1).Cells(17 + i, 4) > j * 0.1 And Workbooks(Fn1).Sheets(1).Cells(17 + i, 4) <= (j + 1) * 0.1 Then _

 Workbooks(Fn1).Sheets(1).Cells(18 + j, 7) = Workbooks(Fn1).Sheets(1).Cells(18 + j, 7) + Workbooks(Fn1).Sheets(1).Cells(17 + i, 2)

 Next i

Next j

 

For i = 2 To n1 + 1

 Workbooks(Fn1).Sheets(1).Cells(9, i) = Format(Workbooks(Fn1).Sheets(1).Cells(9, i), "0.00%")

 Workbooks(Fn1).Sheets(1).Cells(14, i) = Format(Workbooks(Fn1).Sheets(1).Cells(14, i), "0.00%")

 Workbooks(Fn1).Sheets(1).Cells(16 + i, 4) = Format(Workbooks(Fn1).Sheets(1).Cells(16 + i, 4), "0.00%")

Next i



Workbooks(FNO).Close SaveChanges:=False 'Закрытие рабочей книги с названием, соответствующим значению переменной FNO без сохранения изменений

EndTime = Timer

MsgBox "Выполнено за " & Format(EndTime - StartTime, "0.0") & " сек." 'Определение времени выполнения

End Sub


Приложение 2: Процедуры, используемые в программе



Public Function FileNameXLS() As String

'Импорт файла

 Dim Filt As String

 Dim FilterIndex As Integer

 Dim FileName As Variant

 Dim Title As String

 

 'Настройка списка файлов

 Filt = "Файлы Excel (*.xls),*.xls,"

 'По умолчанию используется фильтр *.*

 FilterIndex = 5

 'Заголовок окна

 Title = "Выберите импортируемый файл"

 'Получение имени файла

 FileName = Application.GetOpenFilename(filefilter:=Filt, FilterIndex:=FilterIndex, Title:=Title)

 'При отмене - выйти из окна

 If FileName = False Then

 MsgBox "Файл не выбран"

 FileNameXLS = " "

 Exit Function

 End If

 

 'Отображение полного имени и пути

 'MsgBox "Вы выбрали " & FileName

 FileNameXLS = FileName

End Function



Private Function FileNameOnly(pname) As String

'Возвращает имя файла из пути/имени файла

 FileNameOnly = Dir(pname)

End Function



Sub GreetMe4()

'Процедура для определения приветствия 

 If Time < 0.5 Then

 MsgBox "Доброе утро" & ", выберите импортируемый файл"

 Else

 If Time >= 0.5 And Time < 0.75 Then

 MsgBox "Добрый день" & ", выберите импортируемый файл"

 Else

 If Time >= 0.75 Then

 MsgBox "Добрый вечер" & ", выберите импортируемый файл"

 End If

 End If

 End If

End Sub



Function Num(File) As Integer

'Определение количества тестиреумых

Dim i As Integer



For i = 7 To 10000

 If Workbooks(File).Sheets(1).Cells(i, 1).Value = "Кол-во" Then Exit Function

 Num = Num + 1

Next i

End Function



Sub Diagr()

 Application.ScreenUpdating = False

 Charts.Add

 ActiveChart.Location _

 Where:=xlLocationAsObject, Name:="Лист1"

 With ActiveChart

 .SetSourceData Range("G18:H27")

 .HasTitle = True

 .ChartType = xl3DColumnClustered

 .HasLegend = False

 .ApplyDataLabels Type:=xlDataLabelsShowValue

 .Axes(xlCategory).TickLabels.Orientation = xlHorizontal

 .ChartTitle.Font.Bold = True

 .ChartTitle.Font.Size = 12

 .PlotArea.Top = 18

 .PlotArea.Height = 162

 .Axes(xlValue).MaximumScale = 0.6

 .Deselect

 End With

 Application.ScreenUpdating = True

End Sub





41