O problema é que o número é convertido para hexadecimal, por exemplo o número
99999999999999999999999999999999999999 em hexa vira 1E+38 quando você usa o Mid e tenta transformar o E em Cdbl ocorre o erro 13, também ocorrerá quando tentar transformar o + em cdbl.
Outro exemplo, o número 264572645726457264572645726457 vira 2,64572645726457E+29 neste caso você tem , E +
Se entendi o seu problema acho que a solução é simples, basta não usar esta conversão dblNum1 = CDbl(txtvalor) use como string.
Ex:
Dim dblNum1 as Sgring
dblNum1 = txtvalor
Veja este exemplo.
Dim dblNum1 As String
'txtvalor = Text1
txtvalor = "987654321987654321987654321987654321987654321987654321"
Do While Len(Trim$(txtvalor)) > 1
dblNum1 = txtvalor
txtvalor = ""
For x = 1 To Len(Trim$(dblNum1)) - 1
dblNum2 = CInt(Mid$(Trim$(dblNum1), x, 1)) + CInt(Mid$(Trim$(dblNum1), x + 1, 1))
For y = 1 To Len(Trim$(dblNum2)) - 1
dblNum2 = CInt(Mid$(Trim$(dblNum2), y, 1)) + CInt(Mid$(Trim$(dblNum2), y + 1, 1))
Next
txtvalor = txtvalor & dblNum2
Next
Text1 = Text1 & Chr(13) & Chr(10) & txtvalor
Loop
Neste caso você não vai ter problema de Type Mismatch pois o vb não vai converter a String para hexadecimal e onde você usa o mid como o retorno é sempre um único digito você pode usar o cint no lugar do cdbl.
Eu fiz teste e consegui montar com números superiores a 38 dígitos. O número do exemplo tem 54 digitos. Mas fiz teste com o número de 108 dígitos (na verdade uma string com 108 caracteres)
987654321987654321987654321987654321987654321987654321987654321987654321987654321987654321987654321987654321
Veja se isto resolve o problema.