检查值是否为数字且不超过 n 位

检查值是否为数字且不超过 n 位

我正在尝试向 VBA 子程序添加一些验证,并且我需要确保用户输入的数字不超过设定的限制,我使用函数来提取它,因为它因团队而异。

我可以得到文本长度

With Selection.Validation
    .Add Type:=xlValidateTextLength, AlertStyle:=xlValidAlertStop, _
    Operator:=xlBetween, Formula1:="0", Formula2:=ValidMaxLength

但显然这可以允许文本。

任何帮助都非常感谢。

答案1

是的,加上一个isnumeric和一个长度:

If IsNumeric(Range("A1")) Then

    If Len(Range("A1").Value) < 3 Then

        'do stuff

    End If

End If

除其他事项外,最好先检查它是否为空。由于您只给了我们一个片段,所以我只处理一个片段。

答案2

Len在这里不起作用,因为它可能会将 1.0 选为 3 位数字,将 100 选为 3 位数字。由于它是一个数字,因此您只需检查该值是否小于某个数额(根据您的需要,可能大于 0)。下面的代码应该可以帮助您入门。

Sub ValidateEntry()
    Dim rngToValidate As Range
    Dim val_UpperLimit As Double
    Dim val_LowerLimit As Double
    Set rngToValidate = Range("A1")
    val_UpperLimit = 100
    val_LowerLimit = 0

    If IsNumeric(rngToValidate) _
    And rngToValidate.Value < val_UpperLimit _
    And rngToValidate.Value > val_LowerLimit Then
        'passed validation
    Else
        'failed validation
    End If
End Sub

相关内容