如何仅允许Outlook VBA输入框中的数字

时间:2017-07-16 10:24:59

标签: vba outlook outlook-vba

我正在编写一个宏,要求用户输入一个数字。但我无法验证输入是否为数字。我正在尝试Type:= 1,但它会出错。这是我的一段代码。

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

请在此处提出解决方案。

2 个答案:

答案 0 :(得分:1)

试试这个

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 :(得分:1)

您需要使用Application.InputBox才能使Type工作。

另一种方法是使用包含文本框的用户表单,并将此代码添加到文本框的Change()事件中:

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  

一旦你输入一个字符,就会检查它是什么 - 如果它不是一个数字,那么它就会删除它。