VALIDAR CPF E CNPJ NUM MESMO TEXTBOX [VB / VBA]
Desculpem a ignorância do macaco! Mas preciso terminar um formulário e não sei como aplicar no VBA (onde copiar eu já criei o módulo) para que quando se digitar no formulário do Excel, já se faça a verificação do CPF.
Explicando: Não sei quais instruções dar, ex.: [Ô]Private Sub UserForm_Click()[Ô] ; [Ô]Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)[Ô]; [Ô]Private Sub CPF_CNPJ_Change()[Ô]; Private Sub CPF_CNPJ_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)[Ô].
Enfim, sei fazer funciona na planilha do Excel mas não sei como fazer funcionar diretamente no preenchimento do Formulário. Poderiam me ajudar?
Explicando: Não sei quais instruções dar, ex.: [Ô]Private Sub UserForm_Click()[Ô] ; [Ô]Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)[Ô]; [Ô]Private Sub CPF_CNPJ_Change()[Ô]; Private Sub CPF_CNPJ_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)[Ô].
Enfim, sei fazer funciona na planilha do Excel mas não sei como fazer funcionar diretamente no preenchimento do Formulário. Poderiam me ajudar?
JUVSOARE,
Olha, o VB6 é orientado a eventos, cada um destes eventos é aplicado de acordo com uma atitude que o usuário toma.
Vamos repassar cada uma:
- Click -> Geralmente clique do mouse;
- Form KeyPress -> Qualquer tecla pressionada no teclado pelo usuário no formulário;
- Change -> Qualquer modificação no campo;
- Text KeyPress -> Qualquer tecla pressionada no teclado pelo usuário no campo;
Cada uma destas acima é muito especÃfica, quero dizer, elas gerencia cada tecla digitada! Não é o seu caso...
Eu acho que no seu caso seria melhor fazer a verificação ao [Ô]perder o foco[Ô] -> [Ô]LostFocus[Ô]. Por qu?
Porque você precisa do número completo para aplicar o cálculo do dÃgito verificador de CPF (11 dÃgitos) ou CNPJ (14 dÃgitos).
Se o dÃgito bater, tudo bem. Não precisa fazer nada.
Se tiver problema com o dÃgito verificador e não bater o número, você pode pedir para:
1 - Limpar o campo;
2 - Colocar o foco novamente no campo (SetFocus);
é isto?!?
[][ô]s,
Tunusat.
Olha, o VB6 é orientado a eventos, cada um destes eventos é aplicado de acordo com uma atitude que o usuário toma.
Vamos repassar cada uma:
- Click -> Geralmente clique do mouse;
- Form KeyPress -> Qualquer tecla pressionada no teclado pelo usuário no formulário;
- Change -> Qualquer modificação no campo;
- Text KeyPress -> Qualquer tecla pressionada no teclado pelo usuário no campo;
Cada uma destas acima é muito especÃfica, quero dizer, elas gerencia cada tecla digitada! Não é o seu caso...
Eu acho que no seu caso seria melhor fazer a verificação ao [Ô]perder o foco[Ô] -> [Ô]LostFocus[Ô]. Por qu?
Porque você precisa do número completo para aplicar o cálculo do dÃgito verificador de CPF (11 dÃgitos) ou CNPJ (14 dÃgitos).
Se o dÃgito bater, tudo bem. Não precisa fazer nada.
Se tiver problema com o dÃgito verificador e não bater o número, você pode pedir para:
1 - Limpar o campo;
2 - Colocar o foco novamente no campo (SetFocus);
é isto?!?
[][ô]s,
Tunusat.
Geralmente utiliza-se as seguinte
O evento LostFocus ñao sei se existe no VBA, mas espero ter ajudado
Private Sub CPF_CNPJ_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 13 then [ô]Se a tecla pressionada for ENTER faz a validação
[ô]Aqui você coloca sua rotina para validação e tratameto
End If
End Sub
Private Sub CPF_CNPJ_LostFocus()
[ô]Aqui você coloca sua rotina para validação e tratameto
End Sub
Private Sub CPF_CNPJ_AfterUpdate()
[ô]Aqui você coloca sua rotina para validação e tratameto
End Sub
O evento LostFocus ñao sei se existe no VBA, mas espero ter ajudado
O evento LostFocus não existe no VBA.
Poderia ser criado um evento para simular esse evento, mas acho muito trabalho...
Acho mais pratico utilizar o evendo exit do controle
Private Sub CPF_CNPJ_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If VBA.Len(VBA.Trim(Me.CPF_CNPJ)) = 14 Then
[ô]Valida o CNPJ
MsgBox [Ô]CNPJ[Ô]
ElseIf VBA.Len(VBA.Trim(Me.CPF_CNPJ)) = 11 Then
[ô]Valida o CPF
MsgBox [Ô]CPF[Ô]
Else
[ô]Erro
MsgBox [Ô]Erro[Ô]
End If
End Sub
Espero ter ajudado.
Abraço
Poderia ser criado um evento para simular esse evento, mas acho muito trabalho...
Acho mais pratico utilizar o evendo exit do controle
Private Sub CPF_CNPJ_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If VBA.Len(VBA.Trim(Me.CPF_CNPJ)) = 14 Then
[ô]Valida o CNPJ
MsgBox [Ô]CNPJ[Ô]
ElseIf VBA.Len(VBA.Trim(Me.CPF_CNPJ)) = 11 Then
[ô]Valida o CPF
MsgBox [Ô]CPF[Ô]
Else
[ô]Erro
MsgBox [Ô]Erro[Ô]
End If
End Sub
Espero ter ajudado.
Abraço
JUVSOARE,
Ups, viajei. Desculpe.
Valew Mitsueda Fábio!
[][ô]s,
Tunusat.
Ups, viajei. Desculpe.
Valew Mitsueda Fábio!
[][ô]s,
Tunusat.
Faça seu login para responder