Seleccionar mediante VBA sólo las cifras de un string que tiene cifras y texto

Anónimas
2011-10-25T20:53:09+00:00

¿Cómo se puede seleccionar mediante VBA sólo las cifras de un string que tiene cifras y texto?

Por ejemplo si tengo el siguiente string:

" En el año 1997 se escribió un libro de 781 páginas que se vendía en 39 dólares"

Quiero seleccionar primero la cifra 1994, después seleccionar 781 y luego seleccionar 39.

Todo ello por código.

¿Será posible?

Saludos

Francesca

Microsoft 365 y Office | Excel | Para la casa | Windows

Pregunta bloqueada. Esta pregunta se migró desde la Comunidad de Soporte técnico de Microsoft. Puede votar si es útil, pero no puede agregar comentarios o respuestas ni seguir la pregunta.

0 comentarios No hay comentarios

43 respuestas

Ordenar por: Muy útil
  1. Anónimas
    2011-10-28T00:16:32+00:00

    Hola Héctor,

    Estupendo, ahora funciona, gracias.

    Dos dudas:

    1.- El código reemplaza las cifras en números por cifras en palabras en todo el ducumento, no solamente en el texto seleccionado. Es más, funciona sin seleccionara nada.

    ¿Cómo podría modificarlo para que "actúe" sólo en el texto seleccionado?

    2.- Para cifras con decimales, ¿Se puede incorporar la coma y el punto para que los considere como separador decimal al estar entre dos dígitos?

    Gracias

    Saludos

    Francesca

    ¿Le ha resultado útil esta respuesta?

    0 comentarios No hay comentarios
  2. Héctor Miguel 71,595 Puntos de reputación
    2011-10-27T16:40:09+00:00

    Public Function NumLetras(ByVal Numero As Double, ByVal estilo As Integer) As String

    hola, Fran !

    dependiendo del rango de valores que administre tu funcion para el argumento estilo (0 a 4 ?, o 1 a 3 ?, o ???) y del que prefieras para la "salida" de la funcion (mayusculas, minusculas, ???)...

    cambia esta linea de la propuesta original:

                .Replacement.Text = CStr(EnLetras(Serie(n)))

    por esta otra:

                .Replacement.Text = CStr(NumLetras(Serie(n), 1))

    (cambia el 1 por el "estilo" que prefieras)

    saludos,

    hector.

    ¿Le ha resultado útil esta respuesta?

    0 comentarios No hay comentarios
  3. Anónimas
    2011-10-27T16:14:42+00:00

    Hola Héctor,

    Así:

    Public Function NumLetras(ByVal Numero As Double, ByVal estilo As Integer) As String

    Saludos

    Fran

    ¿Le ha resultado útil esta respuesta?

    0 comentarios No hay comentarios
  4. Héctor Miguel 71,595 Puntos de reputación
    2011-10-27T16:11:36+00:00

    ... me devuelve un error de compilación: El argumento no es opcional.

    Y queda seleccionado el nombre de mi función, la que escribí en lugar de EnLetras ...

    hola, Francesca !

    eso significa que en la definicion de tu funcion se solicita mas de un argumento (ademas del valor a convertir), p.e. la funcion que yo utilice esta definida de la siguiente forma:

    Function EnLetras(valor) As String

      ' aqui el codigo del procedimiento ... '

    End Function

    como esta definida la que usas (primera linea) ?

    saludos,

    hector.

    ¿Le ha resultado útil esta respuesta?

    0 comentarios No hay comentarios
  5. Anónimas
    2011-10-27T15:56:01+00:00

    Hola Héctor,

    Gracias por tu código. Lo probé y me devuelve un error de compilación: El argumento no es opcional.

    Y queda seleccionado el nombre de mi función, la que escribí en lugar de EnLetras

    ¿Ayuda???

    Saludos

    Francesca

    ¿Le ha resultado útil esta respuesta?

    0 comentarios No hay comentarios