[Intermediário VBA] TextBox com máscara no Excel

Um procedimento super simples para ser incluído no evento KeyPress da sua caixa de texto facilita muito o preenchimento de formulários.
Estou demonstrando aqui como colocar uma máscara com bloqueio para o usuário digitar apenas números.
Neste exemplo você verá como a máscara é feita para campos de Data, Hora, CPF e CEP.

O código abaixo permite que o usuário digite apenas números, qualquer outro caractere é ignorado.

No momento da digitação, os caracteres especiais de barra, dois pontos, ponto ou hífen são incluídos automaticamente.

 

Código para máscara de Data

Private Sub txtData_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    'Excel Flex - www.excelflex.com.br/dicas
    If Not IsNumeric(Chr(KeyAscii.Value)) Or Len(txtData.Text) >= 10 Then
        KeyAscii.Value = 0
    Else
        If Len(txtData.Text) = 2 Or Len(txtData.Text) = 5 Then
            txtData.Text = txtData.Text & "/"
        End If
    End If
End Sub

Código para máscara de Hora

Private Sub txtHora_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    'Excel Flex - www.excelflex.com.br/dicas
    If Not IsNumeric(Chr(KeyAscii.Value)) Or Len(txtHora.Text) >= 5 Then
        KeyAscii.Value = 0
    Else
        If Len(txtHora.Text) = 2 Then
            txtHora.Text = txtHora.Text & ":"
        End If
    End If
End Sub

Código para máscara de CPF

Private Sub txtCPF_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    'Excel Flex - www.excelflex.com.br/dicas
    If Not IsNumeric(Chr(KeyAscii.Value)) Or Len(txtCPF.Text) >= 14 Then
        KeyAscii.Value = 0
    Else
        If Len(txtCPF.Text) = 3 Or Len(txtCPF.Text) = 7 Then
            txtCPF.Text = txtCPF.Text & "."
        End If
        If Len(txtCPF.Text) = 11 Then
            txtCPF.Text = txtCPF.Text & "-"
        End If
    End If
End Sub

Código para máscara de CEP

Private Sub txtCEP_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    'Excel Flex - www.excelflex.com.br/dicas
    If Not IsNumeric(Chr(KeyAscii.Value)) Or Len(txtCEP.Text) >= 10 Then
        KeyAscii.Value = 0
    Else
        If Len(txtCEP.Text) = 2 Then
            txtCEP.Text = txtCEP.Text & "."
        End If
        If Len(txtCEP.Text) = 6 Then
            txtCEP.Text = txtCEP.Text & "-"
        End If
    End If
End Sub

 

Estou disponibilizando aqui o arquivo para download do código em operação.

 

Caso precise de ajuda profissional para implementar este código ou então para automatizar a sua planilha, me envie uma mensagem através do formulário de contato que responderei em breve, se preferir, pode me enviar um e-mail através do endereço marcus@excelflex.com.br.

 

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *