Como dr formato a celdas desde userform

Quisiera dar formato a algunas de las celdas ceradas mediante userform.

Por ejemplo en box_fecha quisiera darle formato de fecha y en box_importe que me da el resultad en dolares. Y a la vez si no cumplen con esas características cuando se estén entrando los datos me de algún aviso. Gracias

Private Sub aceptar_Click()

ActiveSheet.Cells(6, 2).Select
Selection.EntireRow.Insert
ActiveSheet.Cells(6, 2) = box_fecha
ActiveSheet.Cells(6, 3) = box_proyecto
ActiveSheet.Cells(6, 4) = box_descripcion
ActiveSheet.Cells(6, 5) = box_pago
ActiveSheet.Cells(6, 6) = box_importe
box_fecha = Empty
box_proyecto = Empty
box_descripcion = Empty
box_pago = Empty
box_importe = Empty
box_fecha.SetFocus
End Sub

2 respuestas

Respuesta
2

Debes 'convertir' cada dato de los textbox al tipo de datos que corresponda. Las columnas o celdas de datos en la hoja Excel ya tendrán el formato deseado.

Por ej, para fechas:

            ActiveSheet.Cells(6, 2) = Cdate(box_fecha)

Para valores moneda con decimales:

            ActiveSheet.Cells(6, 6) = CDbl(box_importe)

Previamente deberás controlar si lo que se ingresan son fechas, valores, etc. con estas rutinas:

Private Sub box_fecha_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsDate(box_fecha) Then Cancel = True
End Sub

Private Sub box_importe_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsNumeric(box_importe) Then Cancel = True
End Sub

Sdos y no olvides valorar la respuesta.

Sigo... Si las celdas no tienen formato y se los quieres dar desde el Userform, podés realizar el pase así. En cada caso coloca tu formato habitual.

ActiveSheet.Cells(6, 2) = Format(box_fecha, "dd/mm/yyyy")     

ActiveSheet.Cells(6, 6) = Format(box_importe, "#.##0,00")     

Sdos!

Respuesta
1

Primero debes pasar el box_fecha como tipo fecha y el box_importe como tipo valor.

Utiliza lo siguiente:

    ActiveSheet.Cells(6, 2) = CDate(box_fecha)
    ActiveSheet.Cells(6, 3) = box_proyecto
    ActiveSheet.Cells(6, 4) = box_descripcion
    ActiveSheet.Cells(6, 5) = box_pago
    ActiveSheet.Cells(6, 6) = Val(box_importe)

Ahora ya en tu hoja cambia el formato de toda la columna "B" al formato de fecha 

Lo mismo con la columna importe , selecciona la columna F y cambia el formato:

Cuando pases la información del form a las celdas la información quedará como fecha e importe.

Saludos. Dante Amor

Si es lo que necesitas.

¡Gracias! Es usted muy amable, siempre se le agradece su prontitud y atención. Tenga buen día.

Dantes Buenos días:

Si a esa misma tabla quisiera agregar una autosuma al final de ella que sea expandible... ¿es decir que mientras se viertan datos ella siga al final de la tabla sumando los totales y adaptándose a al aumento de las filas en la tabla?

Si tienes un rango de celdas convertidos a Tabla, entonces puedes seleccionar la opción "fila de totales" y cada vez que insertes una fila el total se actualizará en automático. Si necesitas algo diferente, podrías crear una nueva pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas