Prezados,
Criei o codigo abaixo para tratar o campo cep, colocando-o no keypress do textbox o codigo funciona, tentei criar uma macro com o codigo e chama-lá no evento keypress mas não funcionou, quem puder me ajudar agradeço.
Derli
If (KeyAscii < 48 Or KeyAscii > 57) Then
If KeyAscii <> 8 Then
If KeyAscii <> 13 Then
KeyAscii = 0
End If
End If
End If
If Len(cep) = 5 Then
cep.Text = cep.Text + "-"
End If
Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Macro para tratar o campo cep (AJUDA)
- Mauro Coutinho
- Jedi
- Mensagens: 1561
- Registrado em: Sáb Mar 13, 2010 8:10 pm
- Localização: São José dos Pinhais - Pr
Re: Macro para tratar o campo cep (AJUDA)
Se entendi, você não quer deixar direto no evento e sim uma rotina separada que faça o teste, não sei o porque, pois o ideal é deixar direto e evitar de termos rotinas desnecessárias, mas de qualquer forma veja se é isto, adicionei uma outra forma de verificar a formatação do campo cep :
[]s
Código: Selecionar todos
Dim sKeyAsc As Double
Private Sub cep_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
sKeyAsc = KeyAscii
Call TestaCep
End Sub
Private Sub TestaCep()
'Limita a Qde de caracteres
cep.MaxLength = 9
If (sKeyAsc < 48 Or sKeyAsc > 57) Then
If sKeyAsc <> 8 Then
If sKeyAsc <> 13 Then
sKeyAsc = 0
End If
End If
End If
If Len(cep) = 5 Then
cep.Text = cep.Text + "-"
End If
End Sub
'Esta seria uma outra forma
Private Sub TestaCep_2()
'Limita a Qde de caracteres
cep.MaxLength = 9
Select Case sKeyAsc
Case 8, 48 To 57 ' BackSpace e numericos
If Len(cep) = 5 Or Len(cep) = 10 Then
cep.Text = cep.Text & "-"
SendKeys "{End}", False
End If
Case Else ' o resto é travado
sKeyAsc = 0
End Select
End Sub
Re: Macro para tratar o campo cep (AJUDA)
Oi Mauro
Tal procedimento seria apenas para eliminar linha de codigo já que preciso tratar vários campos numericos em cada useform.
Se colocar esse codigo que vc me enviou num módulo irá funcionar?
Abs
Tal procedimento seria apenas para eliminar linha de codigo já que preciso tratar vários campos numericos em cada useform.
Se colocar esse codigo que vc me enviou num módulo irá funcionar?
Abs
- Mauro Coutinho
- Jedi
- Mensagens: 1561
- Registrado em: Sáb Mar 13, 2010 8:10 pm
- Localização: São José dos Pinhais - Pr
Re: Macro para tratar o campo cep (AJUDA)
Pelo que disse em utilizar o mesmo criterio em vários textbox sem ter de escrever várias vezes a mesma rotina, para isto podemos trabalhar com manipulador de eventos usando um Modulo de Classe e WithEvents, observando que WithEvents é válido somente em um módulo de classe.
Para facilitar a compreensão criei um modelo, será mais fácil de entender, no mesmo temos dois userforms com alguns textbox e todos obedecerão o critério definido para o formato tipo CEP aceitando digitação somente de numeros.
Mas veja que qualquer textbox que acrescentar obedecerá as mesmas regras, independente se alterar o nome padrão do controle, pois a rotina trata pelo tipo de controle e não pelo Name.
Faça os testes e veja se seria isto. Se for isto, favor colocar o tópico como Resolvido e clicar na mãozinha à direita para agradecer.
[]s
Para facilitar a compreensão criei um modelo, será mais fácil de entender, no mesmo temos dois userforms com alguns textbox e todos obedecerão o critério definido para o formato tipo CEP aceitando digitação somente de numeros.
Mas veja que qualquer textbox que acrescentar obedecerá as mesmas regras, independente se alterar o nome padrão do controle, pois a rotina trata pelo tipo de controle e não pelo Name.
Faça os testes e veja se seria isto. Se for isto, favor colocar o tópico como Resolvido e clicar na mãozinha à direita para agradecer.
[]s