Visual Basic para Aplicaciones - Problema al mostrar el valor de una celda en formato HH:MM

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 3
Ha disminuido su posición en 4 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Problema al mostrar el valor de una celda en formato HH:MM

Publicado por Jorge (1 intervención) el 18/08/2020 01:10:58
Hola a todos. Tengo un problema. Hice un programa que se encarga de mostrar el valor de una celda que está en formato HH:MM, pero no me muestra el valor correcto en un cuadro de diálogo.

Primero pongo el valor de una hora cualquiera en formato String en la celda, al mostrarlo en el cuadro de diálogo me muestra el valor correctamente con ayuda de una macro.
Imagen-1-de-la-duda-para-LWP

Sin embargo, cuando configuro la celda en formato HH:MM y ejecuto la macro, me muestra en el cuadro de diálogo un valor diferente.
Imagen-2-de-la-duda-para-LWP

¿Qué tengo que agregar en mi código para que me muestre el valor de la hora correctamente como busco que aparezca como en la primera imagen?

El código que tengo escrito es el siguiente:
1
2
3
Private Sub cmdMostrar_Click()
   MsgBox "El valor de la celda A1 es: " & Cells(1, "A").Value
End Sub

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Problema al mostrar el valor de una celda en formato HH:MM

Publicado por Antoni Masana (498 intervenciones) el 18/08/2020 08:58:40
No te esta enseñando un valor diferente, te enseña el mismo valor en formato diferente.

¿que te esta enseñando? Es la hora en la forma que lo guarda Excel.

Si haces esta operación veras que es resultado es el mismo: 14/24.
Excel guarda los los días como valores enteros y las horas como decimales, un segundo se guarda en este formato: 1 / ( 24 * 60 * 60 )
Que representa un segundo es la fracción de un día que se compone de 24 horas por 60 minutos por hora y por 60 segundos por minuto.

En el caso de tu ejemplo para obtener el mismo resultado.

1
2
3
Private Sub cmdMostrar_Click()
   MsgBox "El valor de la celda A1 es: " & Format(Cells(1, "A").Value, "HH:MM")
End Sub

Pero solo sirve cuan la celda tenga números en formato hora, para otros valores / formatos tienes que averiguar previamente que tipo de valor tiene y su formato. Que para eso están las macros.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar