4

Я пытаюсь добавить некоторую проверку в сабвуфер VBA, и мне нужно убедиться, что пользователь вводит число, и оно не превышает установленного предела, я использую функцию, так как она зависит от команды.

Я могу получить длину текста

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

Но очевидно, что это может позволить текст.

Любая помощь высоко ценится.

2 ответа2

2

Да, isnumeric и длину:

If IsNumeric(Range("A1")) Then

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

        'do stuff

    End If

End If

Вероятно, лучше всего проверить, что сначала он не пустой, кроме всего прочего. Поскольку вы дали нам только фрагмент, я обращаюсь только к фрагменту.

-1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .