Validation VBA-使用InputBox的负偶数

Validation VBA-使用InputBox的负偶数,validation,vba,excel,inputbox,Validation,Vba,Excel,Inputbox,我对VBA非常陌生,我希望如果有人能在这方面帮助我: 我必须编写一个请求用户使用输入框输入负偶数整数的下属。子程序还需要将99和输入数字之间的所有偶数相加,并在消息框中显示结果。它还必须包括错误检查,以验证初始输入的数字是否为负数、偶数和整数 这是我想到的,但它似乎工作不正常: Option Explicit Sub NegativeEvenIneteger() Dim Sum As Double Dim NumberInput As Integer Dim x As

我对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

请告诉我你们的想法

好,以下代码应执行此操作:

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
选项显式
亚负性Venineteger()
双份点心
数字输入为整数
将x调为双精度
Dim NumberError为布尔值:NumberError=True
NumberInput=InputBox(“请输入负偶数整数”)
如果是数字(NumberInput),则“测试数字”
如果不是像“*.*”这样的数字输入,则测试十进制
如果NumberInput<0,则测试是否为阴性
如果NumberInput Mod 2=0,则
总和=0
对于x=数字,输入98步骤2
总和=总和+x
下一个
NumberError=False
如果结束
如果结束
如果结束
如果结束
如果号码错误,那么
MsgBox“不是有效的输入”
其他的
MsgBox(“此等于”和)&vbCrLf&(“基于输入的数量”)&NumberInput
如果结束
端接头
  • 如果
    NumberInput Mod 2
    为零,则
    NumberInput
    为偶数。在这种情况下,您会显示一条错误消息,表示该数字不是偶数。如果模数不是零,则可能会触发该消息

  • 当你检查输入时,它还没有起到任何作用;即使显示错误消息,也不会停止程序。因此,即使出现错误,一旦用户单击消息框上的“OK”,子例程也会启动并生成不应该出现的结果

    在发生错误的情况下,您需要返回、抛出异常、执行一些操作以脱离主代码路径并防止函数的内容发生


如果
数字输入Mod 2=0
,则数字为偶数。你在操作,好像它不是。更重要的是,即使你显示了一个错误混乱…嗯。让我写一个答案。