Formatear TextBox en Excel vba

Cuando se realizan aplicaciones de Contabilidad o que impliquen cantidades relacionadas con dinero, el formato de celdas de Excel nos permite elegir entre diferentes formatos de moneda.

Pero qué sucede cuando mostramos cantidades en un TextBox de un formulario. Si usamos la propiedad Value de un TextBox nos mostrará el valor sin formato alguno. Es ahí donde deberemos hacer uso de la función Format en vba.

Formatear TextBox en Excel vba

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

Función Format

La función Format nos servirá para usad cualquier formato que necesitemos mostrar en algún mensaje o control ActiveX. Los parámetros que necesita la función son Valor y Formato.

Format(Valor, “Formato”)

Para este ejemplo usamos un formato de moneda y un formato de fecha.

Para moneda usamos: “$#,##0.00”

Para fecha usamos: “dd-mmmm-yyyy”

Ejemplo

En el ejemplo que les comparto tiene una cantidad en una celda y una fecha en otra. Tenemos un formulario que tiene dos TextBoxes, uno para la cantidad y otro para la fecha. Al dar click en el botón Ver datos, se mostrarán los valores formateados.

Usando Format en Excel vba

Figura 1. Usando la función Formato en Excel vba.

Código vba

A continuación el código usado en el formulario.

Private Sub CommandButton1_Click()
'
With Me.TextBox1
    .Value = Range("B1").Value
    .Value = Format(.Value, "$#,##0.00")
End With
'
With Me.TextBox2
    .Value = Range("B2").Value
    .Value = Format(.Value, "dd-mmmm-yyyy")
End With
'
End Sub

Anexos

:: Descargar ejemplo Formatear TextBox en Excel vba.rar

You may also like...

9 Responses

  1. Alf says:

    Hola compañero.
    Tengo un problema con un formulario que estoy creando y buscando soluciones, he llegado a tu blog que me parece muy interesante.

    He creado el formulario para que ponga la fecha de ingreso de unas facturas. Ya había conseguido poner el formato que quería a la fecha (dd/mm/aaaa), con otro código, pero este ejemplo tuyo me parece más simple y preciso y lo he adaptado.
    La fecha me la pone en la hoja en el formato correcto, pero tengo un problema que al introducir en la hoja del formulario los datos, me los tiene que comparar con otra tabla de otra hoja y si los datos de fecha coinciden poner otra serie de datos que introduces en el formulario en esa segunda hoja en la fecha correspondiente….
    No sé ddónde tengo el problema, pero con el formulario no me compara las fechas aunque están con el mismo formato. Sin embargo, si introduzco los datos a través del botón de formulario de la barra rápida de excel, sí compara y hace lo que tiene que hacer…
    Te diré que no he estudiado nada de VBa, y lo que sé es de las horas que le estoy metiendo a esto buscando ejemplo por internet, así que es probable que sea un fallo tonto, pero yo no soy capaz de verlo…
    Si me dieras alguna pista y me ayudaras te lo agradecería enormemente.
    Muchas gracias y un saludo.

  2. Guillermo Feinberg says:

    Hola Amigos

    Quisiera saber si alguno puede ayudarme con un problema que tengo con el formato de fecha.
    Tengo 2 sentencias en Visual Excel
    Valor = InputBox(“Ingrese la FECHA del movimiento”, “FECHA”)
    Range(“MOVIMIENTOS”).Offset(N, 0) = Valor
    cuando ingreso la fecha, por ejemplo 10/4 (que para mi es 10 de Abril), en el InputBox,
    en la siguiente sentencia, asigna a Valor 4/10 (10 de Octubre).
    Mi configuración Regional es dd-mmm-aaaa y en Excel la tengo configurada para que respete esta estructura.
    Desde ya muchas gracias si alguno puede ayudarme

    • sergioacamposh says:

      El formato que toma el InputBox siempre será mm-dd-yy aunque tu configuración Regional sea distinta.

      En el texto puedes dar una sugerencia de que se ingrese la fecha con mm/dd o usar el control DateTimePicker en un formulario para evitar errores de dedo.

  3. Guillermo Feinberg says:

    Hola Amigos

    Quisiera saber si alguno puede ayudarme con un problema que tengo con el formato de fecha.
    Tengo 2 sentencias en Visual Excel
    Valor = InputBox(“Ingrese la FECHA del movimiento”, “FECHA”)
    Range(“MOVIMIENTOS”).Offset(N, 0) = Valor
    cuando ingreso la fecha, por ejemplo 10/4 (que para mi es 10 de Abril), en el InputBox,
    en la siguiente sentencia, asigna a Valor 4/10 (10 de Octubre).
    Mi configuración Regional es dd-mmm-aaaa y en Excel la tengo configurada para que respete esta estructura.
    Desde ya muchas gracias si alguno puede ayudarme

    • sergioacamposh says:

      El formato que toma el InputBox siempre será mm-dd-yy aunque tu configuración Regional sea distinta.

      En el texto puedes dar una sugerencia de que se ingrese la fecha con mm/dd o usar el control DateTimePicker en un formulario para evitar errores de dedo.

  4. El Maury says:

    como puedo hacer esto pero no para una celda fija?

  5. Juan Antonio Millar says:

    Y para modificar los textbox en tiempo de ejecucion??? y aparezcan en formato moneda no se puede????

  6. Olsencito Mestanza says:

    El gran problema de este ejemplo es que si ingresas una cifra con parte decimal se varia completamente el numero. Ejemplo si en la hoja de excel ingreso el numero 10.6 en el form me arrojara el numero 106.00

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: