多语言展示
当前在线:1470今日阅读:23今日分享:25

Excel:数学题生成器

随手做个数学题生成器,让她可以刷一天数学题,上面符号可以设置+-*/随便,只要是电脑认的计算符号就可以,如果孩子想只能做加减法,可以根据自己情况,比如加法想多一些,就写三个+一个减法,可以设定最大的随机数,比如想设置个位的就写9。
方法/步骤
2

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

3

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

4

代码部分直接给代码这个代码是新建模块复制的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 SubSub 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 IfEnd 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

5

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

6

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

7

下面这个代码是在工作表所在地方复制Option ExplicitPrivate 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 IfFlag:  '调转的标签处   '重新打开事件   Application.EnableEvents = TrueEnd Sub

8

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

9

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

10

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

推荐信息