怎么用vba实现100以内加减法练习题

如题所述

'在[ak1]里输入“+”(加号,不要引号),在[ak2]里输入“-”(减号,不要引号)

'你也可以将Set Ra = Range([ak1], Range("ak" & Cells.Rows.Count).End(xlUp)) 中的“ak"

'替换成可视范围的“m",就在[m1]里输入加号,[m2]里输入减号

'为了让f列显示为勾或叉,将该列字体设置为"Wingdings 2"

Sub 出题()

Range("a:f").ClearContents

Dim Ra As Range

If Range("k1") > 100 Then

Range("k1") = 100

MsgBox "您输入的题数太多,已为您调整为100题"

End If

For j = 1 To Val(Range("k1"))

Set Ra = Range([ak1], Range("ak" & Cells.Rows.Count).End(xlUp)) 

Range("b" & j) = Ra(Int(Rnd() * Ra.Count + 1))

Range("d" & j) = "="

99:

a = Application.RandBetween(1, 100)

b = Application.RandBetween(1, 100)

If Range("b" & j) = "-" Then

If a >= b Then

Range("a" & j) = a

Range("c" & j) = b

Else

Range("c" & j) = a

Range("a" & j) = b

End If

End If

If Range("b" & j) = "+" Then

If a + b <= 100 Then

Range("a" & j) = a

Range("c" & j) = b

Else: GoTo 99

End If

End If

Next

End Sub

Sub 评分()

Dim rng As Range

n = 0

For Each rng In Range([b1], Range("b" & Cells.Rows.Count).End(xlUp)) 

If rng = "+" Then

jg = rng(1, 0) + rng(1, 2)

End If

If rng = "-" Then

jg = rng(1, 0) - rng(1, 2)

End If

If rng(1, 4) = jg Then

n = n + 1

rng(1, 5) = "P"

Else

rng(1, 5) = "O"

End If

Next

m = Round(n / Val(Range("k1")) * 100)

If m = 100 Then

MsgBox "你真棒,得了:" & m & "分"

Else

If m >= 80 Then

MsgBox "恭喜,你的得了:" & m & "分"

Else

MsgBox "你只得了:" & m & "分,还需要加油哦!"

End If

End If

End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-07-19
你可以用vba写一个宏
思路是
1 出题个数
2 出题的范围
根据这两个可以写一个随机出题的方法。本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网