如果有多个条件vba,就不能让我的循环工作

时间:2017-10-26 10:59:45

标签: excel vba excel-vba

我正在尝试修改一个允许用户输入1,2或3的宏,并返回一条消息,告诉用户他们选择了哪个号码。如果用户输入除1,2或3之外的任何内容,我想要弹出一条错误消息,然后再次要求用户输入1,2或3.我遇到的问题是我无法获得如果我在其中放置任何超过1个条件的循环。这是我的代码

Public Sub ForecastReport()

    Dim sinput As Integer

    Do
        sinput = Application.InputBox("Please select 1 to 3 " & vbLf & vbLf & "1. GB IMCP" & vbLf & "2. IE IMCP" & vbLf & "3. US", "Enter a Value")

        Select Case sinput
        Case 1
            MsgBox ("you have selected GB IMCP")
        Case 2
            MsgBox ("you have selected IE IMCP")
        Case 3
            MsgBox ("you have selected US")
        Case Else
            MsgBox ("wrong input")
        End Select
    Loop Until sinput <> 3

End Sub

谢谢

2 个答案:

答案 0 :(得分:0)

试试这样:

Loop Until sinput <= 3 And sinput > 0

应该就够了。

答案 1 :(得分:0)

为简单起见,我经常只使用布尔切换来处理何时应该退出这样的循环。这也处理inputbox返回false的情况,因为用户单击了cancel。下面你可以看到我是如何为输入框做的,我希望它返回的值是2000年到2050年之间的一年(år= year)。 Usine InputBox类型:= 1使输入框只接受整数,这对你的情况也很有用。

  Dim år As Variant
  Dim gyldigVerdi As Boolean

  Do
    år = Application.InputBox(Prompt:="Question", Title:="Title", Default:=Year(Date) + 1, Type:=1)
    If Not CBool(år) Then
      Exit Sub
    ElseIf CLng(år) < 2000 Or CLng(år) > 2050 Then
      MsgBox Prompt:="Error-message", Buttons:=vbExclamation, Title:="Title"
      gyldigVerdi = False
    Else
      gyldigVerdi = True
    End If
  Loop Until gyldigVerdi

请注意,我使用Application.InputBox代替通用VBA InputBox - 对于两者之间的一些差异,您可以查看this page

如果您只对比较感兴趣,如果值介于1和3之间将返回true,请查看第一个ElseIf的条件,并使用相反的(x&gt; = 1并且x <= 3)。