Quando trabalhamos com macros e criamos formulários (UserForms), utilizamos objetos que precisam ser configurados para um bom funcionamento ou para facilitar a vida do usuário. O objeto que vou utilizar aqui como exemplo é o TextBox (caixa de texto).

Algumas macros serão apresentadas para exemplificar a formatação de Datas, números de telefones, números de CPF, entre outros.

Estas macros devem ser colocadas nos eventos dos objetos onde serão executadas automaticamente dependendo da ação tomada.

Mascara de CPF

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  TextBox1.MaxLength = 14
  If (KeyAscii < 48 Or KeyAscii > 57) And KeyAscii <> 8 Then
    KeyAscii = 0
  Else
    If Len(TextBox1) = 3 Then
      TextBox1.Text = TextBox1 & "."
    End If
    If Len(cdCPF) = 7 Then
      TextBox1.Text = TextBox1 & "."
    End If
    If Len(cdCPF) = 11 Then
      TextBox1.Text = TextBox1 & "-"
    End If
  End If
End Sub

Definir teclas de atalho

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  If vbKeyF2 = KeyCode Then
    Call Executa_sua_Macro
  End If
End Sub

Texto sempre maiúsculo

Private Sub TextBox1_Change()
  TextBox1 = UCase(TextBox1) 'Utilize LCase para Minúsculo
End Sub

Mascara de telefone

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  If Mid(TextBox1, 1, 1) = "0" Or Mid(TextBox1, 1, 1) = 0 Then 
    TextBox1 = Mid(TextBox1, 2, 20)
  End If
  If Len(TextBox1) = 11 Then
    TextBox1 = Format(TextBox1, "(000) 00000-0000")
  ElseIf Len(TextBox1) = 10 Then
    TextBox1 = Format(TextBox1, "(000) 0000-0000")
  End If
End Sub

As macros apresentadas acima devem ser utilizadas ao objeto TextBox (podem ser utilizadas a outros objetos como o ComboBox). Os exemplos podem ser adaptados para outras necessidades como formatar CNPJ, outros documentos que sigam uma lógica, padrões estabelecidos por empresas quando houver necessidade.