大家好,我是菜刀小鱼,最近看网上有些家长辅导上小学的孩子,关于四则运算总遇到出题难的问题,我特意设计了一款Excel自动出题的工具,只需简单设置条件,秒出题(可打印),电脑做的话还可以秒出对错,具体介绍如下:
要求:使用Microsoft office任意版本,允许宏运行,WPS不支持VBA.
文件结构:本文件包含3张工作表:条件设置,习题,如何使用:

结构

条件设置
条件设置
加减乘除运算自由勾选,
运算对应的数据范围精确设置,
题目一行4题,设置行数,
出题类型包含传统型和自由型,
传统型例如1+1=? 5*6=?
自由型例如1+?=5 ?*5=30 60/15=?随机出现
设置完成点击出题,自动生成符合设定的题目,跳转到习题界面:

做题界面
习题
习题界面包含四个按钮,开始 结束 重新出题 打印模式
电脑答题使用方法:题目生成以后,点击开始,解锁空格,填入答案,做完后点击结束,习题自动判断对错及完成时间(**分**秒):

结束答题
结束答题
打印模式使用:
1 打印空白页:题目生成以后,点击打印模式,系统自动去除表格颜色并设置好打印区域,此时系统解锁所有区域,用户可以更改小朋友的姓名及表头等,之后点击打印即可:

打印1
打印模式1
2 打印错题:小朋友在电脑上完成作业以后,点击完成,系统判断对错,再点击打印模式,家长可以针对性的给小朋友讲解为什么错,界面如下:

打印2
打印错题模式
重新出题:任何时候点击重新出题,系统会根据条件设置中的设置生成一套新的试题.
使用说明中有一些使用方法的介绍
原创不易,谢谢支持
有需要的朋友可以关注并私信我哈,无偿提供源文件!!!!!!!!!!!
部分代码如下:
Sub runwhole() '出题
With Sheet2
Application.ScreenUpdating = False
.Unprotect Password:="123456"
.Cells.Locked = True
.Cells.Borders().LineStyle = xlNone
.Cells.Interior.ColorIndex = xlNone
.Range("O3") = ""
.Range("U3") = ""
.Range("J3") = ""
Call check
Call getvalue
.Range("A5:A" & 5 + rows - 1).Interior.ColorIndex = 5
.Range("G5:G" & 5 + rows - 1).Interior.ColorIndex = 5
.Range("M5:M" & 5 + rows - 1).Interior.ColorIndex = 5
.Range("S5:S" & 5 + rows - 1).Interior.ColorIndex = 5
.Range("Y5:Y" & 5 + rows - 1).Interior.ColorIndex = 5
.Range("A4:Y4").Interior.ColorIndex = 5
.Range("A" & rows + 5 & ":Y" & rows + 5).Interior.ColorIndex = 5
Dim i, ii, k As Integer
If Not valueok Then Exit Sub
.rows(5).Resize(99999).ClearContents
For ii = 5 To 5 + rows - 1
Call runonce(Val(ii))
Next ii
'-----------------------------------------------------------------------生成数据
If kind = "传统型" Then
Sheet2.Range("F5:G" & 5 + rows - 1).ClearContents
Sheet2.Range("L5:M" & 5 + rows - 1).ClearContents
Sheet2.Range("R5:S" & 5 + rows - 1).ClearContents
Sheet2.Range("X5:Y" & 5 + rows - 1).ClearContents
Sheet2.Activate
End If
If kind = "自由型" Then
For i = 5 To 5 + rows - 1
k = Round(Application.RandBetween(0.6, 3.4))
Select Case k
Case 1
.Range("B" & i).ClearContents
Case 2
.Range("D" & i).ClearContents
Case 3
.Range("F" & i).ClearContents
End Select
k = Round(Application.RandBetween(0.6, 3.4))
Select Case k
Case 1
.Range("H" & i).ClearContents
Case 2
.Range("J" & i).ClearContents
Case 3
.Range("L" & i).ClearContents
End Select
k = Round(Application.RandBetween(0.6, 3.4))
Select Case k
Case 1
.Range("N" & i).ClearContents
Case 2
.Range("P" & i).ClearContents
Case 3
.Range("R" & i).ClearContents
End Select
k = Round(Application.RandBetween(0.6, 3.4))
Select Case k
Case 1
.Range("T" & i).ClearContents
Case 2
.Range("V" & i).ClearContents
Case 3
.Range("X" & i).ClearContents
End Select
Next i
Sheet2.Activate
End If
'-------------------------------------------------------------------------隐藏部分单元格
' .Cells.Locked = True
Dim rngg, rng1 As Range
Set rngg = Union(.Range("B5:F" & 4 + rows), .Range("H5:L" & 4 + rows), .Range("N5:R" & 4 + rows), .Range("T5:X" & 4 + rows))
For Each rng1 In rngg
If rng1.Value = "" Then '加一个边框,解除保护
rng1.Locked = False
rng1.Interior.ColorIndex = 4
With rng1.Borders()
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
End If
Next
.Protect Password:="123456