Luiz Pedro, tentei testar o seu código aqui, porém não consegui.
Mas eu tenho em meus projetos aqui, uma função para cada caso, não sei se dá para você aproveitar no seu projeto.
'Coloque as funções em um módulo que é melhor, pois qualquer parte do seu projeto poderá se aproveitar da mesmas Functions.
Function CampoCnpj(obj As Object, KeyAscii As Integer)
If Not ((KeyAscii >= Asc("0") And KeyAscii <= Asc("9")) Or KeyAscii = 8) Then
KeyAscii = 0
Exit Function
End If
If KeyAscii <> 8 Then
If Len(obj.Text) = 2 Or Len(obj.Text) = 6 Then
obj.Text = obj.Text & "."
obj.SelStart = Len(obj.Text)
End If
If Len(obj.Text) = 2 Or Len(obj.Text) = 10 Then
obj.Text = obj.Text & "/"
obj.SelStart = Len(obj.Text)
End If
If Len(obj.Text) = 2 Or Len(obj.Text) = 15 Then
obj.Text = obj.Text & "-"
obj.SelStart = Len(obj.Text)
End If
End If
End Function
Function CampoCpf(obj As Object, KeyAscii As Integer)
If Not ((KeyAscii >= Asc("0") And KeyAscii <= Asc("9")) Or KeyAscii = 8) Then
KeyAscii = 0
Exit Function
End If
If KeyAscii <> 8 Then
If Len(obj.Text) = 3 Or Len(obj.Text) = 7 Then
obj.Text = obj.Text & "."
obj.SelStart = Len(obj.Text)
End If
If Len(obj.Text) = 11 Then
obj.Text = obj.Text & "-"
obj.SelStart = Len(obj.Text)
End If
End If
End Function
'No evento KeyPress do campo onde será digitado:
Private Sub TxtCnpj_KeyPress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
CampoCnpj TxtCnpj, KeyAscii
End Sub
Private Sub TxtCpf_KeyPress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
CampoCpf TxtCpf, KeyAscii
End Sub
Neste caso, à medida que você vai digitando os números vão aparecendo os pontos, a barra e o traço correspondente, no local certo.
Note que no meu exemplo, são criados 2 TextBox, portanto você pode criar as duas e colocar no Form uma em cima de outra, aí vai da criatividade. Eu já cheguei a ver exemplos onde você seleciona em um OptionButton se é pessoa Física ou Jurídica, neste caso dependendo da opção selecionada, torna-se Visible somente a TexBox correspondente, e assim por diante.
Talvez te ajude, sei lá. Sempre utilizei assim e funcionou.
Valeu?
Até mais.