VBA - 使用InputBox的负偶数

时间:2013-10-09 16:50:42

标签: excel validation vba excel-vba inputbox

我对VBA非常新,我希望有人能帮助我解决这个问题:

我必须编写一个下属,要求用户使用输入框输入负整数。子程序还需要对99和输入数字之间的所有偶数和求和,并将结果显示在消息框中。它还必须包括错误检查,它将初始输入的数字验证为负数,偶数和整数。

这是我提出的,但它似乎没有正常工作:

Option Explicit

Sub NegativeEvenIneteger()

    Dim Sum As Double
    Dim NumberInput As Integer
    Dim x As Double

    NumberInput = InputBox("Please Enter a Negative Even Integer")

    If NumberInput >= 0 Then MsgBox ("ERROR, Input number must be Negative")
    If NumberInput Mod 2 = 0 Then MsgBox ("ERROR, Input number must be Even")

    Sum = 0
    For x = NumberInput + 1 To 0 Step 2
        Sum = Sum + x
    Next

    MsgBox ("This equals " & Sum) & vbCrLf & _
    ("based on the inputted number of ") & NumberInput

End Sub

请让我知道你们的想法。

2 个答案:

答案 0 :(得分:1)

确定以下代码应该完成这项工作:

Option Explicit

Sub NegativeEvenIneteger()

Dim Sum As Double
Dim NumberInput As Integer
Dim x As Double
Dim NumberError As Boolean: NumberError = True
NumberInput = InputBox("Please Enter a Negative Even Integer")

If IsNumeric(NumberInput) Then 'test for number
    If Not NumberInput Like "*.*" Then 'test for decimal
        If NumberInput < 0 Then 'test for negative
            If NumberInput Mod 2 = 0 Then
                Sum = 0
                For x = NumberInput To 98 Step 2
                    Sum = Sum + x
                Next
                NumberError = False
            End If
        End If
    End If
End If

If NumberError Then
    MsgBox "not a valid input"
Else
    MsgBox ("This equals " & Sum) & vbCrLf & ("based on the inputted number of ") & NumberInput
End If

End Sub

答案 1 :(得分:1)

  • 如果NumberInput Mod 2为零,则NumberInput为偶数。在这种情况下,您会显示一条错误消息,指出该数字不均匀。如果模数为零,则可能会触发该消息。

  • 当你检查输入时,它还没有任何好处;即使您显示错误消息,也不会停止该程序。因此,即使出现错误,一旦用户在消息框中单击“确定”,子程序就会生成并且不会产生结果。

    如果出现错误,您需要返回,抛出异常,做一些事情以摆脱主代码路径并防止功能发生。