VB代码在excel中不起作用

时间:2016-12-19 01:25:04

标签: excel excel-vba encoding vba

您好我试图回答一个非常基本的问题但是我试图让它在excel中运行 我需要程序在屏幕上显示正确的答案 我的代码是

Private Sub CommandButton1_Click()

Dim i As Integer

Dim A1 As Integer

Dim A2 As Integer

Dim Ans As Integer

i = 1

A1 = 31.2928

A2 = 22.352

If (((A1 * i) / 2)) > (A2 * i) Then

Ans = i

Else

        i = i + 1

End If

Ans = i

MsgBox "Value is" & Ans

End Sub

我希望它能够对上述陈述提出正确答案 我希望程序将A1乘以i,然后将其除以2然后查看它是否大于A2乘以i并循环程序直到找到一个数字

1 个答案:

答案 0 :(得分:2)

您首先将A1设置为31,将A2设置为22.然后计算等于(((31 * 1) / 2)) > (22 * 1)的{​​{1}}。 (即使您计算了False,也会这样做。)因为(((31.2928 * 1) / 2)) > (22.352 * 1) Falsei设置为i + 1 2。然后,您设置Ans = i,因此Ans现在为2。

我相信你想要的是

Private Sub CommandButton1_Click()

    Dim i As Integer
    Dim A1 As Double
    Dim A2 As Double
    Dim Ans As Integer
    i = 1
    A1 = 31.2928
    A2 = 22.352
    Do
        If (((A1 * i) / 2)) > (A2 * i) Then
            Ans = i
            Exit Do
        End If
        i = i + 1
    Loop

    MsgBox "Value is " & Ans

End Sub

但是,由于31.2928 * i /2永远不会超过22.352 * i(因为15.6464< 22.352),我建议您不要运行该代码,因为它会在i崩溃到达32767并发出溢出错误。

注意:(a * i) > (b * i)形式的等式相当于a > b(将两边除以共同值i后),因此答案为True或{ {1}}无论False 的值如何(假设i的正值)