如题所述
'在[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 出题个数
2 出题的范围
根据这两个可以写一个随机出题的方法。本回答被提问者采纳