O valor de verificação é numérico e não mais que n dígitos

4

Estou tentando adicionar alguma validação a um sub de VBA e preciso garantir que o usuário insira um número e que ele não seja maior que o limite definido. Estou fazendo isso usando uma função, pois ela varia dependendo a equipe.

Eu posso pegar o textlength

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

Mas obviamente isso pode permitir texto.

Qualquer ajuda muito apreciada.

    
por Addy1981 21.01.2014 / 15:22

2 respostas

2

Sim, inclua isnumeric e comprimento:

If IsNumeric(Range("A1")) Then

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

        'do stuff

    End If

End If

Provavelmente também é melhor verificar se não está vazio primeiro, entre outras coisas. Como você só nos deu um trecho, estou falando apenas de um trecho.

    
por 21.01.2014 / 16:01
-1

Len não funcionará aqui, pois pode escolher 1,0 como 3 dígitos e 100 como 3 dígitos. Como é um número, basta verificar se o valor é menor que um determinado valor (e provavelmente mais de 0, dependendo das suas necessidades). Algo como o código abaixo deve ajudá-lo a começar.

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
    
por 21.01.2014 / 21:42