2017-07-16 3 views
1

Ich schreibe ein Makro, in dem der Benutzer aufgefordert wird, eine Zahl einzugeben. Aber ich kann nicht validieren, ob die Eingabe die Nummer ist oder nicht. Ich versuche Typ: = 1, aber es gibt einen Fehler. Hier ist mein Code.So ermöglichen Sie Nur Zahlen im Outlook VBA-Eingabefeld

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 

Bitte schlagen Sie vor, was hier die Lösung sein sollte.

Antwort

1

Versuchen Sie, diese

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

können Sie die _Limit = InputBox ...._ Zeile innerhalb der _do while_ Schleife setzen, dann müssen Sie es am Ende der Schleife nicht wiederholen – jsotola

+0

gute pt jsotola, ich hv optimiert entsprechend – curious

+0

@curious danke. Es funktioniert. Ich habe es entsprechend optimiert. –

1

Sie müssen Application.InputBox für den Typ verwenden, um zu arbeiten.

Eine Alternative ist ein Benutzerformular enthält ein Textfeld zu verwenden und diesen Code zum Change() Ereignis der Textbox hinzu:

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 

Sobald Sie ein Zeichen eingeben überprüft es, was es ist - wenn es kein ist Nummer, dann entfernt es es.

Verwandte Themen