论文部分内容阅读
在信息时代,如果您现在还让学生以纸笔方式进行自测练习,是不是显得有些笨拙?既然知道计算机的快速处理能力超强,为何不让它们这些特点为教学服务?在Word中利用控件和VBA程序编制交互式自测练习,可以自动批改客观题的答题结果,并为主观题提供参考答案,帮助学生及时了解自己的学习情况。
一、自测练习文档交互界面与功能简介
自测练习题目选自笔者的“Intenet网络及其应用”课程的期末考试题。Word自测文档交互界面如右图所示:上方的五个按钮分别为客观题批改(Check1)、主观题参考答案(Check2)、清除批改(Clear_Check)、清除参考答案(Clear_ RefAnswer)、清除回答(Clear_Answer);中间含客观题和主观题,客观题的选项由14道单选题的下拉组合框(cBox_ Answer1_1~14)和12道是非题的下拉组合框(cBox_Answer2_1~ 12)实现,主观题包括17个填空题的回答文本框(tBox_Answer3 _1~17)和4道问答题的回答文本框(tBox_Answer4 _1~4);各单选题和是非题左侧是放置自动批改的文本框(Score1_1~14,Score2_1~12),各填空题和问答题下面是放置参考答案的文本框(Answer3_1~17,Answer4_1~4);左下角图标对应Microsoft Office Spreadsheet 11.0控件数据源,放置全部试题选项和参考答案(实现方法参阅第7~8期合刊。本文档所有控件的名称均可在VBA编辑器单击F4键后在“属性”窗口中修改。
二、VBA程序的设计与编制
(一)通用变量、数组与对象声明
Dim i, j As Integer
Dim qOption1(1 To 5) As String, qOption2(1 To 3) As String’“单选题”与“是非题”选择答案字符串选项数组
Dim ArrCtrlIndex() As Variant’控件索引变量数组
Dim ArrCtrlName() As String ’控件名字字符串数组
Dim CtrlObj As Object ’控件对象
(二)控件信息数组的初始化进程代码
Private Sub initCtrlArray()’将所有控件信息分别放入两数组中
Dim l As Integer
ReDim ArrCtrlIndex(1 To ActiveDocument.InlineShapes.Count) As Variant
ReDim ArrCtrlName(1 To ActiveDocument.InlineShapes.Count) As String
For l = 1 To ActiveDocument.InlineShapes.Count’数组ArrCtrlIndex用于存放控件索引
ArrCtrlIndex(l) = l
’数组ArrCtrlName用于存放控件名称
ArrCtrlName(l) = ActiveDocument.InlineShapes.Item(l). OLEFormat.Object.Name
Next l
End Sub
(三)获取控件对象的函数代码
Private Function getCtrlObject(CtrlName As String) As Object’函数结果为名字符合要求的控件对象
Dim l As Integer
For l = 1 To UBound(ArrCtrlName)’由1至控件数组最大下标
If (CtrlName = ArrCtrlName(l)) Then
Set getCtrlObject = ActiveDocument.InlineShapes.Item (ArrCtrlIndex(l)).OLEFormat.Object
Exit Function
End If
Next l
End Function
(四)设置客观题各组合框选项数据的进程代码
Private Sub Document_Open()’打开文档时执行的进程
initCtrlArray ’控件数组初始化
’一、单选题第1~14题的组合框选项数据设置
For i = 1 To 14
’循环设置单选题第1~14题的组合框对象选项
Set CtrlObj = getCtrlObject("cBox_Answer1_"
一、自测练习文档交互界面与功能简介
自测练习题目选自笔者的“Intenet网络及其应用”课程的期末考试题。Word自测文档交互界面如右图所示:上方的五个按钮分别为客观题批改(Check1)、主观题参考答案(Check2)、清除批改(Clear_Check)、清除参考答案(Clear_ RefAnswer)、清除回答(Clear_Answer);中间含客观题和主观题,客观题的选项由14道单选题的下拉组合框(cBox_ Answer1_1~14)和12道是非题的下拉组合框(cBox_Answer2_1~ 12)实现,主观题包括17个填空题的回答文本框(tBox_Answer3 _1~17)和4道问答题的回答文本框(tBox_Answer4 _1~4);各单选题和是非题左侧是放置自动批改的文本框(Score1_1~14,Score2_1~12),各填空题和问答题下面是放置参考答案的文本框(Answer3_1~17,Answer4_1~4);左下角图标对应Microsoft Office Spreadsheet 11.0控件数据源,放置全部试题选项和参考答案(实现方法参阅第7~8期合刊。本文档所有控件的名称均可在VBA编辑器单击F4键后在“属性”窗口中修改。
二、VBA程序的设计与编制
(一)通用变量、数组与对象声明
Dim i, j As Integer
Dim qOption1(1 To 5) As String, qOption2(1 To 3) As String’“单选题”与“是非题”选择答案字符串选项数组
Dim ArrCtrlIndex() As Variant’控件索引变量数组
Dim ArrCtrlName() As String ’控件名字字符串数组
Dim CtrlObj As Object ’控件对象
(二)控件信息数组的初始化进程代码
Private Sub initCtrlArray()’将所有控件信息分别放入两数组中
Dim l As Integer
ReDim ArrCtrlIndex(1 To ActiveDocument.InlineShapes.Count) As Variant
ReDim ArrCtrlName(1 To ActiveDocument.InlineShapes.Count) As String
For l = 1 To ActiveDocument.InlineShapes.Count’数组ArrCtrlIndex用于存放控件索引
ArrCtrlIndex(l) = l
’数组ArrCtrlName用于存放控件名称
ArrCtrlName(l) = ActiveDocument.InlineShapes.Item(l). OLEFormat.Object.Name
Next l
End Sub
(三)获取控件对象的函数代码
Private Function getCtrlObject(CtrlName As String) As Object’函数结果为名字符合要求的控件对象
Dim l As Integer
For l = 1 To UBound(ArrCtrlName)’由1至控件数组最大下标
If (CtrlName = ArrCtrlName(l)) Then
Set getCtrlObject = ActiveDocument.InlineShapes.Item (ArrCtrlIndex(l)).OLEFormat.Object
Exit Function
End If
Next l
End Function
(四)设置客观题各组合框选项数据的进程代码
Private Sub Document_Open()’打开文档时执行的进程
initCtrlArray ’控件数组初始化
’一、单选题第1~14题的组合框选项数据设置
For i = 1 To 14
’循环设置单选题第1~14题的组合框对象选项
Set CtrlObj = getCtrlObject("cBox_Answer1_"