Validação de Dados VBA.

Anônima
2016-04-07T16:17:34+00:00

Olá, tenho uma planilha que contém algumas formatações para validação de dados, ex: posso inserir até 12 números em uma célula, passando disso é apresentada a alerta de erro. Porém quando um usuário copia uma informação e cola na Planilha ela não faz essa validação.

Gostaria de saber se existe uma forma de fazer essa validação por VBA?

Microsoft 365 e Office | Excel | Para uso doméstico | Windows

Pergunta bloqueada. Essa pergunta foi migrada da Comunidade de Suporte da Microsoft. É possível votar se é útil, mas não é possível adicionar comentários ou respostas ou seguir a pergunta.

0 comentários Sem comentários

Resposta aceita pelo autor da pergunta

Anônima
2016-04-12T16:54:40+00:00

Boa tarde,

Obrigado pelas explicações. Agora consegui entender o processo.

Adaptei o código conforme segue abaixo.

A questão é que Target considerava antes uma única célula. Agora modifiquei para que seja interpretado como um intervalo o qual será percorrido célula a célula.

Se houver problemas, apenas as células que violarem as regrar serão apagadas.

Caso te atenda, não deixe de marcar a resposta.

[ ]s

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 1 Then

'Testa o tamanho'

For Each Rng In Target

IntTamanho = Len(Rng)

'Se não houver 12 números'

If IntTamanho <> 12 Then

MsgBox "Operação cancelada" & vbCrLf _

& "Violação de regras de validação de Dados", vbCritical

Application.EnableEvents = False

Rng.ClearContents

Application.EnableEvents = True

End If

Next Rng

End If

End Sub

[ ]s

Esta resposta foi útil?

1 pessoa achou esta resposta útil.
0 comentários Sem comentários

10 respostas adicionais

Classificar por: Mais útil
  1. Anônima
    2016-04-11T15:36:54+00:00

    Boa tarde!

    Muito Obrigada!

    O código está funcionando muito bem.

    Só tem mais um detalhe, caso seja possível me ajudar.

    Preciso que os números fiquem sem pontuação, e caso o usuário insira algum ponto ou barra, o código também bloquei.

    Também gostaria de saber se tem como esse código ao invés de validar por linha, valide por coluna, Por exemplo: "A:A"?

    Esta resposta foi útil?

    0 comentários Sem comentários
  2. Anônima
    2016-04-10T20:40:21+00:00

    Boa tarde,

    Eu havia interpretado que queria restringir 12 diferentes valores e não limitar a 12 dígitos...

    Vamos então:

    Private Sub Worksheet_Change(ByVal Target As Range)

    'Validação de valores digitados em A1

    'Testar se a célula modificada foi A1

    If Target.Address = "$A$1" Then

    'Testar o número de caracteres digitados em A1

    intTamanho = Len(Target)

    'Exibir mensagem se não houver 12 caracteres

    If intTamanho <> 12 Then

    'Caso o valor não tenha 12 caracteres será exibida uma mensagem e o valor será apagado

    MsgBox "O valor digitado não tem 12 algarismos"

    Application.EnableEvents = False

    Target.ClearContents

    Application.EnableEvents = True

    Exit Sub

    End If

    'Exibir mensagem se o valor digitado não for numérico

    If IsNumeric(Target) = False Then

    'Caso o valor não seja numérico será exibida uma mensagem e o valor será apagado

    MsgBox "O valor digitado não é numérico"

    Application.EnableEvents = False

    Target.ClearContents

    Application.EnableEvents = True

    Exit Sub

    End If

    End If

    End Sub

    [ ]s

    Esta resposta foi útil?

    0 comentários Sem comentários
  3. Anônima
    2016-04-07T19:54:15+00:00

    Boa tarde,

    Obrigada pela resposta.

    Testei o código acima, porém não resolveu o problema, pois o mesmo pede que seja inserido na células números de 1 a 12.

    Preciso  de um código que permita que eu insira dentro de uma célula um CPF OU CNPJ (até 12 dígitos), e passando disso o código deve bloquear e mandar a mensagem de alerta.

    Esta resposta foi útil?

    0 comentários Sem comentários
  4. Anônima
    2016-04-07T17:05:31+00:00

    Boa tarde, 

    O código a seguir deve ajudá-lo.

    Para inserí-lo clique com o botão direito na aba da planilha, selecione Exibir código e cole o procedimento no módulo que será exibido.

    Private Sub Worksheet_Change(ByVal Target As Range)

    'Validação de valores digitados em A1

    'Listagem dos valores aceitos para digitação

    arrValoresPermitidos = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)

    'Testar se a célula modificada foi A1

    If Target.Address = "$A$1" Then

    'Percorrer a lista de valores permitidos

    For i = LBound(arrValoresPermitidos) To UBound(arrValoresPermitidos)

    'Se o valor válido termina o procedimento

    If Target = arrValoresPermitidos(i) Then Exit Sub

    Next i

    'Caso o valor não seja válido, será exibida uma mensagem e o valor será apagado

    MsgBox "Este valor não é permitido"

    Application.EnableEvents = False

    Target.ClearContents

    Application.EnableEvents = True

    End If

    End Sub

    [ ] s

    Esta resposta foi útil?

    0 comentários Sem comentários