La Web del Programador: Comunidad de Programadores
 
    Pregunta:  49335 - COMO SEPARAR UN DATO QUE CONTIENE NUMEROS Y LETRAS EN VB
Autor:  Nancy Rivas
El problema es que tengo un campo que contiene numeros y letras(ALFANUMERICO) y quiero separarlos, pero no se como hacer la diferencia entre estos, como le indico que hay letra o numero.

Ejemplo:

Mi campo es IDPlan que contiene los datos siguentes: 12,15A,123,106B,etc.

Quiero colocar los numeros en una columna(Cuenta) y la letra en otra columna(LetraCuenta) , El campo IDPlan cambia de longitud como pueden ver y por eso deseo saber como le hago para indicar que en ese caracter es letra o numero.

Como referencia podria decirles que la letra siempre va al final, pero no todos los numeros contienen letra.

Cuenta LetraCuenta

12
15 A
123
106 B

Esto es en Visual Basic 6. Lo estuve intentando con substring pero me marca error.

Si saben como hacerlo , en verdad se los agradeceria.

  Respuesta:  Eider Mauricio Aristizábal Erazo
'El truco está en los números de la tabla ascii utilizando la funcion asc.
'Suerte Nancy

Function Extraer(ByVal Cadena, ByRef Numeros, ByRef Letras)
Dim i As Integer
Dim Car As String
For i = 1 To Len(Cadena)
Car = Mid(Cadena, i, 1)
'Truco los numeros 0-9 en la tabla ascii
If (Asc(Car) >= 48 And Asc(Car) <= 57) Then
Numeros = Numeros + Car
Else
Letras = Letras + Car
End If
Next i
Numeros = Trim(Numeros)
Letras = Trim(Letras)
End Function

Function Probar()
Dim Cadena, Numeros, Letras As String
Cadena = "106 B" 'Cadena para analizar
Num = "" 'Aqui se asignarán los numeros desde la función
Letr = "" 'Aqui se asignarán las letras desde la función
Extraer Cadena, Numeros, Letras
MsgBox "Cadena " + Cadena + Chr(13) _
+ "Numeros " + Numeros + Chr(13) _
+ "Letras " + Letras, vbInformation, _
"Espero te sirva de ayuda"
End Function

'Saludos desde cali colombia