让EXCEL自动出题
当家里有孩子上小学时,为了提高学习成绩,家长都会经常给孩子出一些算术题让他们练习,还要把孩子作过的题检查对错,是一件很麻烦的事情。如果用EXCEL表格做一个能自动出题,又能对答案自动检查,将大大节省家长的时间,而且还能提高孩子的兴趣。
下面就介绍一个“四则运算”的表格做法,可一次出五道题,在表格的F列输入答案后,能在G列显示对错。
第一步:制作表格
F列是让孩子输入答案的地方,输入答案后会马上在G列显示“正确”或“不对”的提示。
=IF(F3="","?",IF(F3=H3,"正确","不对"))
把代码粘贴到打开的空白窗口中
Sub 出题()
Dim a1 As Integer, a2 As Integer
Dim b1 As Integer, b2 As String
Randomize '对随机数生成器做初始化
Range("f3:f7") = "" '先清除以前的结果
n = 100 '设定计算结果在这个值以内
For i = 1 To 5 '一次出五道题
b1 = Int(Rnd() * 4) + 1 '生成1到4的整数,对应加减乘除符号
10:
a1 = Int(Rnd() * 100) + 1 '生成1至100的整数
a2 = Int(Rnd() * 100) + 1 '生成1至100的整数
'下面是求值过程,如果值大于100,就返回上面第10语句行重新取数
'加法
If b1 = 1 Then b2 = "+": a3 = a1 + a2: If a3 > n Then GoTo 10
'减法
If b1 = 2 Then
b2 = "-"
If a1 > a2 Then a3 = a1 - a2
'避免计算结果为负数
If a2 > a1 Then t = a1: a1 = a2: a2 = t: a3 = a1 - a2
End If
'乘法
If b1 = 3 Then b2 = "×": a3 = a1 * a2: If a3 > n Then GoTo 10
'除法
If b1 = 4 Then
b2 = "÷"
If a1 > a2 Then a3 = a1 / a2
'避免计算结果为小数
If a1 < a2 Then t = a1: a1 = a2: a2 = t: a3 = a1 / a2
If a3 <> Int(a3) Then GoTo 10
End If
'显示到表格中
Cells(i + 2, 2) = a1: Cells(i + 2, 3) = b2: Cells(i + 2, 4) = a2: Cells(i + 2, 5) = "=" '列出算式
'写入答案到第八列中,即H列中。
Cells(i + 2, 8) = a3
Next
End Sub
上面的代码通过生成随机数达到自动出题的目的,由变量b1来确定加减乘除的运算符号。
按“视图-工具栏-窗体”,调出“窗体”工具栏,选中其中的“按钮”控件,在屏幕上“画”出一个大小适中的按钮。
然后用鼠标右键点击这个按钮的边沿,在快捷菜单中选“指定宏”,这时会弹出一个“宏”对话框,从中选“出题”这个宏,确定即可。
所有这些完成后就可以使用了,每按一次按钮,可生成5个算式。
如果你想生成更多的算式,可以改变代码中循环变量 i 的终值。
下面就介绍一个“四则运算”的表格做法,可一次出五道题,在表格的F列输入答案后,能在G列显示对错。
步骤/方法
表格的样子如下图:
第一步:制作表格

可按上图样子做出一个表格,其中的B到E列是电脑自动填入的,不用管。
F列是让孩子输入答案的地方,输入答案后会马上在G列显示“正确”或“不对”的提示。
表格中的H列是由电脑生成的答案,做检查时会用到,平时使用时应该把它隐藏起来。隐藏H列的方法是,用鼠标右键点击表格上H列的“列标”,会弹出快捷菜单,从中选“隐藏”就可使H列隐藏起来。

第二步:输入公式
这个表中唯一有公式的地方是G列,在G3单元格输入下面公式:
=IF(F3="","?",IF(F3=H3,"正确","不对"))
这个公式中用了两个IF函数嵌套,先判断F3单元格是否为“空”,即是否填入了答案,如果没填入答案就显示一个“?”符号。如果F3单元格中填入答案了,就判断这个答案跟H3单元格(由电脑生成的答案)是否相等,然后给出“正确”或“不对”的提示。
G3单元格公式输入后,就可以用鼠标向下拖动复制到G列的下面各单元格中(G4:G7单元格)。
上面这些步骤完成后,就可以做VBA部份了,大家可以不必太在意这些代码的含义,只要会使用它就行了。
第三步:编写代码
在当前工作表标签上按鼠标右键,选“查看代码”,打开当前表格的VBA窗口。
把代码粘贴到打开的空白窗口中

Sub 出题()
Dim a1 As Integer, a2 As Integer
Dim b1 As Integer, b2 As String
Randomize '对随机数生成器做初始化
Range("f3:f7") = "" '先清除以前的结果
n = 100 '设定计算结果在这个值以内
For i = 1 To 5 '一次出五道题
b1 = Int(Rnd() * 4) + 1 '生成1到4的整数,对应加减乘除符号
10:
a1 = Int(Rnd() * 100) + 1 '生成1至100的整数
a2 = Int(Rnd() * 100) + 1 '生成1至100的整数
'下面是求值过程,如果值大于100,就返回上面第10语句行重新取数
'加法
If b1 = 1 Then b2 = "+": a3 = a1 + a2: If a3 > n Then GoTo 10
'减法
If b1 = 2 Then
b2 = "-"
If a1 > a2 Then a3 = a1 - a2
'避免计算结果为负数
If a2 > a1 Then t = a1: a1 = a2: a2 = t: a3 = a1 - a2
End If
'乘法
If b1 = 3 Then b2 = "×": a3 = a1 * a2: If a3 > n Then GoTo 10
'除法
If b1 = 4 Then
b2 = "÷"
If a1 > a2 Then a3 = a1 / a2
'避免计算结果为小数
If a1 < a2 Then t = a1: a1 = a2: a2 = t: a3 = a1 / a2
If a3 <> Int(a3) Then GoTo 10
End If
'显示到表格中
Cells(i + 2, 2) = a1: Cells(i + 2, 3) = b2: Cells(i + 2, 4) = a2: Cells(i + 2, 5) = "=" '列出算式
'写入答案到第八列中,即H列中。
Cells(i + 2, 8) = a3
Next
End Sub

上面的代码通过生成随机数达到自动出题的目的,由变量b1来确定加减乘除的运算符号。
由于是小学生的四则运算,计算结果不能是负数与小数,所以在减法与除法的过程中要用IF函数进行判断,不符合要求时就返回第十语句行重新取数。
该代码可生成1-100范围内的数据,并让计算结果也在100以内,如果你想自己设定范围,可改变相关参数。
第四步:添加按钮
现在回到EXCEL窗口,还要再添加一个按钮来执行这个代码。
按“视图-工具栏-窗体”,调出“窗体”工具栏,选中其中的“按钮”控件,在屏幕上“画”出一个大小适中的按钮。
提示:添加按钮的方法有很多,例如还可以用“绘图”工具栏中的各种“形状”、“艺术字”等,这些都可以“指定宏”来达到运行代码的目的。
然后用鼠标右键点击这个按钮的边沿,在快捷菜单中选“指定宏”,这时会弹出一个“宏”对话框,从中选“出题”这个宏,确定即可。

所有这些完成后就可以使用了,每按一次按钮,可生成5个算式。
如果你想生成更多的算式,可以改变代码中循环变量 i 的终值。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:196
阅读量:86
阅读量:29
阅读量:98
阅读量:167