Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Validação de CPF TextBox: erro 13 "Tipos incompatíveis" [RESOLVIDO]

Dúvidas gerais sobre Word
Avatar do usuário
costaribeiro
Colaborador
Colaborador
Mensagens: 96
Registrado em: Ter Mar 04, 2014 10:10 am
Localização: Pouso Alegre - MG

Validação de CPF TextBox: erro 13 "Tipos incompatíveis" [RESOLVIDO]

Mensagem por costaribeiro »

:D Olá pessoal!

Elaborei um formulário no Word para facilitar meu trabalho. Nele, tem um TextBox para inserção de CPF que, ao sair, verifica sua validade. Entretanto, ocorre o Erro em tempo de execução '13': Tipos incompatíveis e destaca a rotina intMais = intNumero * i na macro de validação.

Alguém pode ajudar a contornar, ou resolver, esse problema?

Validação do CPF:

Código: Selecionar todos

Option Explicit



Function DVCPF(CPF As String) As String

Dim lngSoma, lngInteiro As Long
Dim intNumero, intMais, i, intResto As Integer
Dim intDig1, intDig2 As Integer
Dim strDigVer, strcampo, strCaracter, StrConf As String
Dim dblDivisao As Double
lngSoma = 0
intNumero = 0
intMais = 0
strcampo = Left(CPF, 9)
strDigVer = Right(CPF, 2)
For i = 2 To 10
strCaracter = Right(strcampo, i - 1)
intNumero = Left(strCaracter, 1)
intMais = intNumero * i
lngSoma = lngSoma + intMais
Next i
dblDivisao = lngSoma / 11
lngInteiro = Int(dblDivisao) * 11
intResto = lngSoma - lngInteiro
If intResto = 0 Or intResto = 1 Then
intDig1 = 0
Else
intDig1 = 11 - intResto
End If
strcampo = strcampo & intDig1
lngSoma = 0
intNumero = 0
intMais = 0
For i = 2 To 11
strCaracter = Right(strcampo, i - 1)
intNumero = Left(strCaracter, 1)
intMais = intNumero * i
lngSoma = lngSoma + intMais
Next i
dblDivisao = lngSoma / 11
lngInteiro = Int(dblDivisao) * 11
intResto = lngSoma - lngInteiro
If intResto = 0 Or intResto = 1 Then
intDig2 = 0
Else
intDig2 = 11 - intResto
End If
StrConf = intDig1 & intDig2
DVCPF = StrConf
If DVCPF = strDigVer Then
'MsgBox "CPF válido!", vbInformation
Else
MsgBox "CPF inválido", vbCritical
'DoCmd.CancelEvent
End If

End Function

Chamada da macro no formulário:

Código: Selecionar todos

Private Sub txt_CPF_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Call DVCPF(Me.txt_CPF)
End Sub
Desde já, agradecido.
Editado pela última vez por costaribeiro em Sex Ago 12, 2016 4:37 pm, em um total de 1 vez.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: Validação de CPF TextBox: erro 13 "Tipos incompatíveis"

Mensagem por Mikel Silveira Fraga »

Fala meu amigo Costa Ribeiro, como tem passado!?

Cara, outro dia, postei um modelo baseado em Criação de Classes no VBA, que realiza validação de CPF, CNPj, Chave de Acesso de DFe e Título de Eleitor. Chegou a dar uma olhada?

Bem, o interessante de se trabalhar com Classe, que a mesma pode ser adaptado a um modelo do Word, PowerPoint, Access e qualquer outra aplicação Office/VBA, desde que a mesma não esteja fazendo nenhuma referência as bibliotecas específicas de cada aplicação.

Caso tenha interesse, vou deixar aqui o link para dar uma olhada.
- [MODELO] Objeto Módulo Classe - Validação Documentos Brasileiros

Abraços e excelente noite.


Avatar do usuário
costaribeiro
Colaborador
Colaborador
Mensagens: 96
Registrado em: Ter Mar 04, 2014 10:10 am
Localização: Pouso Alegre - MG

Re: Validação de CPF TextBox: erro 13 "Tipos incompatíveis"

Mensagem por costaribeiro »

Caro Mikel,

Achei muito interessante e prático.

Mas, se não for inoportuno, como eu chamo a validação para CPF somente, no TextBox "txt_CPF"? Sem a necessidade de botão.

Obrigado.


Avatar do usuário
Mikel Silveira Fraga
Jedi
Jedi
Mensagens: 1173
Registrado em: Sex Mai 27, 2011 3:27 pm
Localização: Governador Valadares - MG
Contato:

Re: Validação de CPF TextBox: erro 13 "Tipos incompatíveis"

Mensagem por Mikel Silveira Fraga »

Costa Ribeiro, bom dia.

O que você poderia fazer é utilizar um dos dois eventos do TextBox: Change ou AfterUpdate. O interessante seria criar uma rotina para validação. Considerando que o CPF seja informado sem a formatação, poderia ser feito da seguinte forma:
- Evento do TextBox

Código: Selecionar todos

Private Sub txt_CPF_Change()
  If VBA.Len(txt_CPF.Value) = 11 then Call ValidaCPF(txt_CPF.Value)
End Sub
ou
Private Sub txt_CPF_AfterUpdate()
  If VBA.Len(txt_CPF.Value) = 11 then Call ValidaCPF(txt_CPF.Value)
End Sub
No caso, o procedimento ValidaCPF, poderia ser feito da seguinte forma:

Código: Selecionar todos

Private Sub ValidaCPF(ByVal sDoc as String)
  Dim vdDoc As ValidateDocument
  vdDoc.CheckDocument "vdCPF", sDoc
  If vdDoc.Validate = True Then
    MsgBox "Dígito Verificador possui erros. Favor verificar.", vbCritical, "Erro na verificação"
  End If  
End Sub
Caso essa rotina seja colocada em um Módulo, altere de Private para Public.

Dúvidas, a disposição.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
costaribeiro
Colaborador
Colaborador
Mensagens: 96
Registrado em: Ter Mar 04, 2014 10:10 am
Localização: Pouso Alegre - MG

Re: Validação de CPF TextBox: erro 13 "Tipos incompatíveis"

Mensagem por costaribeiro »

Caro Mikel,

Ajudou bastante. Adaptei ao formulário e facilitou.

Obrigado. :P


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder