Separar un número en las cifras

Quiero separar un número almacenado en un campo de texto o número en las diferentes cifras (ejemplo: 235 separarlo en tres campos: 2, 3 y 5)

1 respuesta

Respuesta
1
No estoy muy seguro de si voy a contestar exactamente lo que quieres, pero a lo mejor puedes aprovechar algo de mi respuesta.
Doy por sentado que en la tabla tienes tres campos para almacenar esos valores. Para el ejemplo yo he llamado a esos campos "DigitoX", donde POR es 1, 2 y 3. Ojo, esos campos son tipo texto.
Partiendo de esa base te paso un código que, resumiendo, lo que hace es
1.- Coge el texto (y si es un número lo convierte en texto) y separa cada uno de los dígitos.
2.- Los almacena en una matriz
3.- Según la longitud del número (de 1 a 3 dígitos), va rellenando los campos "DigitoX"
4.- Se ejecuta en un formulario donde hay un campo (que yo he llamado "Numerotxt") donde el usuario introduce el número a descomponer. Y se ejecuta cuando haces click en un botón que yo he llamado "cmdDescomponeNum"
El código es el siguiente:
Private Sub cmdDescomponeNum_Click()
    Dim strNumero As Variant
    Dim intDigitos, i As Integer
    Dim arrValores() As Integer
    strNumero = Me.Numerotxt.Value
        'Comprueba si el número introducido es de tipo numérico.
        'Si lo es, lo convierte a texto
    If IsNumeric(strNumero) Then
        strNumero = CStr(strNumero)
    End If
        'Saca cuántos dígitos hay
    intDigitos = Len(strNumero)
        'Redimensiona la matriz
    ReDim arrValores(intDigitos)
        'Rellena la matriz
    For i = 1 To intDigitos
        arrValores(i) = Mid(strNumero, i, 1)
    Next
        'Suponiendo que hemos creado tres campos para almacenar los
        'dígitos, llamados "DígitoX", con x=(1,2,3)
    Select Case intDigitos
        Case 3
            Me.Digito1.Value = arrValores(1)
            Me.Digito2.Value = arrValores(2)
            Me.Digito3.Value = arrValores(3)
        Case 2
            Me.Digito1.Value = arrValores(1)
            Me.Digito2.Value = arrValores(2)
        Case 1
            Me.Digito1.Value = arrValores(1)
    End Select
End Sub
---
Espero que más o menos sea lo que necesitabas. Si el número es mayor de tres dígitos puedes ir añadiendo, en el Select Case, Case 4, Case 5, etc. Lógicamente deberás tener, en la tabla, esos campos (Digito4, Digito5, etc.) creados.
Suerte!
Muchas gracias por tu respuesta, eso es exactamente lo que ando buscando, más tarde lo pruebo y te informo.
Gracias de nuevo
Todo perfecto y funcionando, las cifras en que se separa efectivamente son texto pero pueden operarse, es decir creando un campo digito1*digito2*digito3, al momento de aplicar el comando se generan las cifras separadas y el producto de las mismas.
Muchísimas gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas