2017-07-16 1 views
1

私は、ユーザが番号を入力するよう求められているマクロを書いています。しかし、私は入力が数字かどうかを検証できません。タイプ:= 1を試していますが、エラーが発生します。ここに私のコードがあります。許可方法Outlook VBA入力ボックスの数字のみ

Limit = Replace(Trim(Left(Split(b, "LIMIT:")(1), 
     Len(Split(b, "LIMIT:")(1)) - 
     Len(Split(b, "EXCESS:")(1)) - 7)), ".", "") 
If Limit = "Up to full value any one Occurrence and in all 
      during the Period" & vbCrLf & vbCrLf & " " & vbCrLf & vbCrLf Then 
Limit = TIV 
Else 
Limit = InputBox(prompt:="Limit is not FULL VALUE. Enter Limit", 
     Title:="LIMIT", Default:=TIV,Type:=1) 
End If 
MsgBox Limit 

ここで解決策を提案してください。

答えて

1

は、あなたが動作するタイプのためApplication.InputBoxを使用する必要があり、この

Sub getLimit() 
    Dim Limit As Variant 
    Do While True 
     Limit = InputBox("please enter a number", "LIMIT") 
     If IsNumeric(Limit) Then 
      MsgBox Limit, , "LIMIT" 
      Exit Do 
     End If 
     If MsgBox("Limit is not FULL VALUE. Enter Limit", vbOKCancel, "LIMIT") = vbCancel Then Exit Do 
    Loop 
End Sub 
+1

_Limit = InputBox ...._行を_do while_ループの内側に置くと、ループの最後にそれを繰り返す必要はありません。 – jsotola

+0

良いpt jsotola、それに応じて最適化されました – curious

+0

@curiousありがとうございます。それは働いている。私はそれに応じてそれを最適化しました。 –

1

を試してみてください。そうでない場合 - あなたは文字を入力すると、それはそれが何であるかをチェックするとすぐ

Private Sub TextBox1_Change() 
    With Me.TextBox1 
     If .Text Like "[!0-9]" Or Val(.Text) < -1 Or .Text Like "?*[!0-9]*" Then 
      Beep 
      .Text = Left(.Text, Len(.Text) - 1) 
     End If 
    End With 
End Sub 

代替は、テキストボックスを含むユーザーフォームを使用して、テキストボックスのChange()イベントにこのコードを追加することですそれを削除します。

関連する問題