我对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
请让我知道你们的想法。
答案 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
为偶数。在这种情况下,您会显示一条错误消息,指出该数字不均匀。如果模数不为零,则可能会触发该消息。
当你检查输入时,它还没有任何好处;即使您显示错误消息,也不会停止该程序。因此,即使出现错误,一旦用户在消息框中单击“确定”,子程序就会生成并且不会产生结果。
如果出现错误,您需要返回,抛出异常,做一些事情以摆脱主代码路径并防止功能发生。