Excel:数学题生成器
来源:网络收集 点击: 时间:2024-09-02按照我这个格式,先画框架出来

设置自定义格式
设置自定义格式:很棒,你答对了;;继续努力,不对哦!
这里简单解释下看中间分号,把这个内容分成三部分,第一个表示正数的时候显示内容,第二个负数,第三个部分表示0时候
我会用程序判断回答的对不对,对的就会写个1,错误写0,就对应显示结果

做个条件格式
先设置图标
然后去条件格式里改一下,百分比改为数值

代码部分直接给代码
这个代码是新建模块复制的
Dim startime As Date 计时程序的公共变量
Sub suiji() 随机程序
Dim i As Long
Dim sj1 As Integer, sj2 As Integer, ssFH As String
Range(c6:g15).ClearContents 清空内容
For i = 6 To 15
利用内置函数获得2个随机数
sj1 = Application.RandBetween(1, Range(g3).Value)
sj2 = Application.RandBetween(1, Range(g3).Value)
如果是减号的时候,为了照顾孩子,不会做负数,随机1不能小于随机2
ssFH = Cells(3, Application.RandBetween(2, 5)).Value
If ssFH = - Then
If sj1 sj2 Then 如果小的时候,就重新随机直到大于等于的时候
Do While sj1 sj2
sj1 = Application.RandBetween(1, Range(g3).Value)
sj2 = Application.RandBetween(1, Range(g3).Value)
Loop
End If
End If
Cells(i, C).Value = sj1 ssFH sj2
Next
Range(d6).Select 开始答题的地方
End Sub
Sub jishigongneng()
Dim sp As Shape
Range(d6).Select 开始答题的地方
定义把点击按钮定义一个变量
Set sp = ActiveSheet.Shapes(Application.Caller)
判断按钮的显示内容,是开始答题的时候
If sp.DrawingObject.Text = 开始答题 Then
Range(i6).ClearContents 清空计时
名字改为结束答题
sp.DrawingObject.Text = 结束答题
Call start 调用开始计时程序
Else 按钮显示的内容不是开始答题的时候
名字改为开始答题
sp.DrawingObject.Text = 开始答题
调用结束计时程序
Call killontime
End If
End Sub
开始计时程序
Private Sub start()
公共变量等于现在的时间+1秒
startime = Now() + TimeValue(00:00:01)
到实际执行jishi程序
Application.OnTime startime, jishi
End Sub
计时程序,每秒钟写时间计入i6单元格
Private Sub jishi()
自己不断的加一秒钟时间
Range(i6).Value = Range(i6).Value + TimeValue(00:00:01)
Call start 又回头调用start程序,形成一个反复调用的程序
End Sub
结束计时程序
Private Sub killontime()
Application.OnTime startime, jishi, , False



使用说明:
1,按快捷键ALT+F11打开vbe编辑界面
2,点击右键插入

复制上面代码,到这个模块里

下面这个代码是在工作表所在地方复制
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
判断如果是多个单元格改变,就退出
If Target.Rows.Count 1 Then Exit Sub
If Target.Columns.Count 1 Then Exit Sub
如果行号小于等于5的时候退出
If Target.Row = 5 Then Exit Sub
如果列号不等于4的时候退出
If Target.Column 4 Then Exit Sub
关闭事件,防止反复调用
Application.EnableEvents = False
On Error GoTo Flag 如果发生错误调转到Flag标签处
If Target.Value Then 判断下写的值不能是空白
如果结果是正确的时候
If Evaluate(Target.Offset(0, -1).Value) = Target.Value Then
Target.Offset(0, 1).Value = 1 右边单元格写1
Else 错误的时候就写0
Target.Offset(0, 1).Value = 0
End If
Else 如果结果是空白的时候
右边就显示空白
Target.Offset(0, 1).Value =
End If
Flag: 调转的标签处
重新打开事件
Application.EnableEvents = True
End Sub

点击电脑标签页,右键,查看代码

把上面代码复制到这里就好了

个人建议----我们这里用到了几个知识点
1,条件格式的使用
2,自定义格式
3,vba编程,如果不会,起码要会自己复制黏贴

版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_1185100.html