O Excel é limitado a 15 dígitos e sua formatação precisa de mais de 15 dígitos. Criri um objeto tabela formatado como texto. Criei uma função no VBA para formatar o texto da forma que pediu, sendo acionado a cada vez que vc digitar e der enter.
As macros utilizadas foram:
Código: Selecionar todosPublic Function FormataTexto(vrtTexto As String)
Dim vrtAcentos As Variant
Dim vrtAcento As Variant
Dim vrtNovoTexto As String
vrtAcentos = Array(".", ",", "~", "^", "´", "`", _
"-", "_", "+", "=", "{", "}", _
"[", "]", "(", ")", "/", "?", _
"", "", "")
vrtNovoTexto = vrtTexto
For Each vrtAcento In vrtAcentos
vrtNovoTexto = VBA.Replace(vrtNovoTexto, vrtAcento, "")
Next vrtAcento
FormataTexto = VBA.Left(vrtNovoTexto, 7) & "-" & _
VBA.Mid(vrtNovoTexto, 7, 2) & "." & _
VBA.Mid(vrtNovoTexto, 10, 4) & "." & _
VBA.Mid(vrtNovoTexto, 14, 1) & "." & _
VBA.Mid(vrtNovoTexto, 15, 2) & "." & _
VBA.Right(vrtNovoTexto, 4)
End Function
Código: Selecionar todosPrivate Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ErrorHandler
If Not Application.Intersect(Target, wshTeste.ListObjects("tbTexto").DataBodyRange) Is Nothing Then
Target.Value2 = FormataTexto(Target.Value2)
End If
ErrorHandler:
End Sub