Jump to content
pildo

ANSWERED formato en textbox

Recommended Posts

hola a todos

 

estoy intentando hacer que un combobox me rellene automáticamente varios textbox que luego pasarán a formar parte de una tabla.

 

Hasta ahí todo controlado, más o menos.

 

El problema es que uno de los datos que me llegan hasta un textbox es en un formato [hh]:mm que me da la suma de tiempo que se ha estado usando un aparato, horas y minutos (5236:38 por ejemplo), si, son muchas horas jejeje

Pues cuando con el combobox selecciono un item del menú desplegable, no lo pasa en el formato correcto.

 

Lo he intentado de todas las maneras posibles, y nada... (horas_motor1 es el textbox)

horas_motor1.Value = Format(horas_motor1.Value, "[hh]:mm")

horas_motor1 = Format(horas_motor1, "[hh]:mm")

horas_motor1 .Text = Format(horas_motor1 .Value, "[hh]:mm")

 

y más....

 

me sale en el texbox :06 en vez de todas las horas...

 

saludos

Share this post


Link to post
Share on other sites
1 hour ago, Toldeman said:

Hola.

Prueba con "h:mm"

Saludos.

hola Toldeman

 

el problema es que quiero sumar tiempo hasta que sean miles de horas de trabajo, por lo que el formato que uso en las celdas donde están los datos es la de [hh]:mm para que sea el formato que quiero.

 

Por ejemplo, debe de ser así si quiero sumar horas de un dia que fueron 20:30 de trabajo y 15:20 el siguiente día, siendo 35:50 horas el total...

 

saludos

Share this post


Link to post
Share on other sites

hola de nuevo

 

aquí tienes un ejemplo

 

he hecho un formulario para elegir entre número de coche (cada coche un número) y que te salga en el textbox las horas que lleva de funcionamiento. en la hoja Excel está en formato [hh]:mm por eso salen las horas como 2584:55 (pro ejemplo) y luego al llevarlas al formulario, se me vuelve loco el formato.

 

saludos

paraforo.xlsm

Share this post


Link to post
Share on other sites

hola de nuevo y muchas gracias

 

Antoni, el ejemplo que me has mandado, no entiendo como hace para pasar los datos tal y como lo quiero.... veo que usa el combobox para buscar y darme el dato, pero.... como lo pone como quiero? en el formato que quiero?

Los datos, en mi formulario, se pasan a los diferentes textbox gracias y comparando con el valor elegido en el combobox (me imagino que recordarás hace unos días mi post en el mismo foro). Pero ahora con tu solución, no sé como implementarlo.

 

No hay una solución en la que salga el formato que quiero y ya? no entiendo por qué no me hace caso cuando le digo [hh]:mm y sí cualquier otro formato... 

 

saludos

Share this post


Link to post
Share on other sites

según he estado leyendo, creo que los textbox trabajan con sus datos como texto, por lo que habría que pasar este texto (aunque el original sea un número) a valor numérico para luego operar con él, cambiarle el formato o lo que sea...

 

es así?

Share this post


Link to post
Share on other sites

Las celdas tienen las propiedades Value y Text,  en la propiedad Value nos proporciona el valor según el tipo de dato, la propiedad Text nos proporciona el valor según el formato aplicado a la celda en formato texto.

Las fechas/hora se almacenan como el número de días transcurridos desde el 1/1/1900, así el 3/1/1900 se almacena como 3.

La hora se muestra como la fracción de tiempo transcurrido dentro del día en concreto, 3/1/1900 6:00 se almacena como 3,25.

Con esta lógica, en el momento de escribir esto, son las 11:19:15 del 1/4/2020 y se almacena como 43922,4711517361 que es el tiempo total transcurrido desde 1/1/1900 expresado en días.

Conclusión, el resultado de cualquier operación entre fechas/horas se expresa en días y por tanto son datos de tipo numérico como lo son los importes o las cantidades.

Si lo has entendido, verás que "30:00" en un tetxbox es un texto y no es lo mismo que "30:00" en una celda, con formato [hh]:mm, su propiedad Text nos muestra "30:00", que es un texto y su propiedad Value nos muestra 1,25, que es un número.

O sea, el valor la propiedad Value es única, el valor de la propiedad Text, dependerá del formato aplicado a la celda.

En cualquier caso, cualquier dato se convierte en texto al pasarlo a un textbox/listbox/combobox.

Te dejo un ejemplo.

 

 

Ejemplo fechas y horas.xlsx

Share this post


Link to post
Share on other sites

muchas gracias por la explicación.

 

es increible que pueda poner cualquier formato de fecha, números, etc, excepto el que quiero...

 

sólo quiero pasar una celda que es es 156,243055555556 que me la da un combobox y la pone en un texbox y pasarla a 3749:50 horas, que es el valor que quiero que salga en el formulario...

creo que el problema es el uso de los corchetes dentro de vba [ ] que no le hace ni caso porque se usa para otros menesteres...

Share this post


Link to post
Share on other sites

No existe el formato [h]:mm en VBA, o lo haces a través de una celda con ese formato utilizando la propiedad Text, tal como está en  el último archivo que subí, o te lo fabricas a mano. 

Share this post


Link to post
Share on other sites

amigo @pildo asi pudieras hacerlo asi

Private Sub ComboBox1_Change()
   Dim nTiempo As Double
   
   On Error Resume Next
   
    TextBox1 = ComboBox1.List(ComboBox1.ListIndex, 1)
    nTiempo = CDbl(TextBox1) * 24
    TextBox2 = Int(nTiempo) & ":" & Format((nTiempo - Int(nTiempo)) * 60, "00")
    
End Sub

 

Share this post


Link to post
Share on other sites
51 minutes ago, bigpetroman said:

amigo @pildo asi pudieras hacerlo asi


Private Sub ComboBox1_Change()
   Dim nTiempo As Double
   
   On Error Resume Next
   
    TextBox1 = ComboBox1.List(ComboBox1.ListIndex, 1)
    nTiempo = CDbl(TextBox1) * 24
    TextBox2 = Int(nTiempo) & ":" & Format((nTiempo - Int(nTiempo)) * 60, "00")
    
End Sub

 

 

MARAVILLOSO!!!!

muchas gracias, esto funciona 🙂

Share this post


Link to post
Share on other sites
Hace 13 horas, bigpetroman dijo:

amigo @pildo asi pudieras hacerlo asi


Private Sub ComboBox1_Change()
   Dim nTiempo As Double
   
   On Error Resume Next
   
    TextBox1 = ComboBox1.List(ComboBox1.ListIndex, 1)
    nTiempo = CDbl(TextBox1) * 24
    TextBox2 = Int(nTiempo) & ":" & Format((nTiempo - Int(nTiempo)) * 60, "00")
    
End Sub

 

A eso me refería cuando decía lo de fabricarlo a mano.

El próximo problema vendrá cuando quieras pasar ese dato a una celda, entonces veremos si has entendido algo de todo lo que te hemos explicado.

Hasta pronto.

Edited by Antoni

Share this post


Link to post
Share on other sites

@Antoni, todo lo que me explicaste me ha venido perfecto, y lo he implementado en mi hoja, todo ha salido perfecto, suma horas, añade horas... todo lo hace bien y en el formato que quería.

 

Muchas gracias a todos... y seguiré preguntando :-)

 

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

INFORMACIÓN BÁSICA SOBRE PROTECCIÓN DE DATOS

Responsable: Sergio Andrés Celemín

Finalidad: Moderar y responder comentarios de usuarios. Recuerda que la información que facilites es pública, y los datos que incluyas los leerá cualquier visitante de esta web, así como el avatar que poseas.

Legitimación: Consentimiento del interesado.

Destinatarios: Hetzner Online GmbH.

Derechos: Puedes ejercitar en cualquier momento tus derechos de acceso,
rectificación, supresión, oposición y demás derechos legalmente establecidos a
través del email sergio@ayudaexcel.com.

Información adicional: Encontrarás más información en la política de privacidad.




×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png