2017-10-26 4 views
1

1,2,3のいずれかを入力できるようにするマクロを作成しようとしています。 。ユーザーが1,2、または3以外のものを入れた場合は、エラーメッセージがポップアップして、1,2、または3の入力を再度求められます。問題は私が得ることができないことです私はそれに1つ以上の条件を置くとループが働きます。複数の条件がある場合、私のループを働かせます。

Loop Until sinput <= 3 And sinput > 0 

それが十分でなければなりません。ここに私のコードがある

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 

答えて

0

私はしばしば、ブールトグルを使用して、そのようなループを終了する必要があるときに処理します。これは、ユーザーがキャンセルをクリックしたため、入力ボックスがfalseを返す場合も処理します。以下は、2000年から2050年の間の年(år=年)になる値を入力欄に入力したい場合の入力ボックスの仕組みを示しています。 Usine InputBox type:= 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 

私が代わりに汎用のVBA InputBoxApplication.InputBoxを使用する注 - 両者の違いの一部について、あなたはthis pageを見てすることができます。

値が1〜3の場合にtrueを返す比較に興味がある場合は、最初のElseIfの条件を見て、反対の(x> = 1およびx < = 3)。私のアイデアを与えOK

+0

OPは質問を英語で尋ねたので、あなたのコードが英語であることを確認したいかもしれません。他のユーザーは、コード(特にプロンプ​​トやコメント)を理解するのが困難な場合があります。 –

+0

SOは厳密にOPのためのものではなく、後で私たちの答えにつきまとう多くの人のためのものであることを覚えておいてください。 OP *はあなたのコードを読んでいるかもしれませんが(多分そうではないかもしれませんが)、つまずく人は、入ったときよりも混乱しているかもしれません。永続化の目的のために、少なくとも私たちの能力の最高に理解すること。また、変数はまだ別の言語になっています。変数は理想的に記述的でなければならないので、これは間違いなく可能な限り明確にしたいものです。 –

+0

おかげさまで皆様のご協力をいただきました。 Eirik、私は少し混乱しています、あなたのコードのどの部分が扱っているのは、ユーザーが何も入力していないということです。申し訳ありませんが飛び出す場合 - 私は非常にこれに新しいです。 –

0

は次のように試してみてくださいありがとうございました。

+0

、 - ユーザが< 'と間違っている何0になりますか –

+0

空白のままにしない限り、私は>、今動作するように思われる3 Vityata

+0

<> 3は3回通過しません.1,2,3回通すようにしようとしています。他の番号は再問い合わせしなければなりません。 –

関連する問題