Página 1 de 1

Macro para tratar o campo cep (AJUDA)

Enviado: Qua Mai 27, 2015 3:37 pm
por derlim30
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

Re: Macro para tratar o campo cep (AJUDA)

Enviado: Qua Mai 27, 2015 4:36 pm
por Mauro Coutinho
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 :

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
[]s

Re: Macro para tratar o campo cep (AJUDA)

Enviado: Qua Mai 27, 2015 5:08 pm
por derlim30
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

Re: Macro para tratar o campo cep (AJUDA)

Enviado: Qua Mai 27, 2015 11:28 pm
por Mauro Coutinho
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.
Textbox keypres_WithEvents.zip
(22.06 KiB) Baixado 120 vezes
Se for isto, favor colocar o tópico como Resolvido e clicar na mãozinha à direita para agradecer.

[]s