使用随机化计时器

时间:2015-06-23 07:05:12

标签: excel vba excel-vba

以下程序代码有什么问题,为什么不返回正确的结果? 每当我在单元格(1,1)中放入任何数字并运行程序时,数字会自动更改,也不会在单元格(1,2)中抛出正确的结果。

Private Sub Sheet2_1()

    Dim num1 As Integer
    Dim grade As String

    Randomize Timer
    num1 = Int(Rnd * 100)

    Cells(1, 1).Value = num1

    If num1 >= 50 Then
        grade = "B"
        Cells(1, 2).Value = grade
    ElseIf num1 <= 100 And num1 > 50 Then
        grade = "A"
        Cells(1, 2).Value = grade
    Else
        grade = "Check"
        Cells(1, 2).Value = grade
    End If

End Sub

1 个答案:

答案 0 :(得分:0)

你的第二个ElseIf陈述永远不会成真。

首先,检查num1是否大于或等于50

If num1 >= 50 Then
  grade = "B"
  Cells(1, 2).Value = grade

想象一下如果num1等于49,则下一个ElseIf将被执行。这会检查num1是否小于或等于100,但您确定总是如此,因为如果它大于100,则第一个If会已被执行。

接下来就是检查num1是否大于50。好吧,你知道这不是因为这已经在第一个If声明中检查过了。

我认为这就是你想要的:

Private Sub Sheet2_1()
  Dim num1 As Integer
  Dim grade As String

  Randomize Timer
  num1 = Int(Rnd * 100)

  Cells(1, 1).Value = num1

  If num1 <= 50 Then
    grade = "B"
    Cells(1, 2).Value = grade

  ElseIf num1 > 50 And num1 <= 100 Then
    grade = "A"
    Cells(1, 2).Value = grade

  Else
    grade = "Check"
    Cells(1, 2).Value = grade

  End If

End Sub