Hojas de cálculo en Excel - página principal

Calculadora de tiempos

Dado que son muchos los usuarios que llegan a este blog, buscando como operar con unidades de tiempo, y como complemento a los artículos donde explicaba como convertir horas de 100 minutos, o como convertir unidades de tiempo a formato hh:mm:ss, o como convertir unidades de tiempo: horas, minutos, y segundos, o incluso como calcular horas normales y horas extras, hoy os presento una pequeña utilidad para convertir horas, minutos y segundos, a unidades decimales, todo ello presentado a través de un formulario, pero que se puede adaptar para cualquier otro modo de presentación, como por ejemplo incluyendo los resultados en diferentes celdas, de nuestra hoja de cálculo Excel.

Lo que tendremos que hacer es diseñar un UserForm (un formulario), con este aspecto:


No penséis que hay una etiqueta (label) supergrande. En realidad hay varias etiquetas, lo que pasa es que están ligeramente superpuestas, de ahí que parezca que solo hay una.

Para lanzar el UserForm, simplemente tendremos que añadir estas líneas a un módulo:


Sub lanzar_userform()
'lanzamos el userform
UserForm1.Show
End Sub

Y este sería el código para que cuando se cargue el formulario, nos llene los tres ComboBox, el de las horas, el de los minutos, y el de los segundos:

Private Sub UserForm_Initialize()
'Si hay errores, que continúe
On Error Resume Next
'Al cargar el Userform, mostramos
'el listado de horas, minutos y segundos,
'para ello le pondremos un tope de 1000
'horas en el combobox, aunque se puede cambiar

For i = 0 To 1000
'Añadimos las horas
ComboBox1.AddItem i
If i <= 59 Then
'Añadimos los minutos
ComboBox2.AddItem i
'Añadimos los segundos
ComboBox3.AddItem i
End If
Next
End Sub

Este otro será el código que se ejecutará, al cliquear sobre el botón que hay en el formulario, y que tiene como etiqueta el nombre "Calcular":

Private Sub CommandButton1_Click()
'Si hay errores, que continúe
On Error Resume Next
'Hacemos los cálculos que mostraremos
'en las diferentes etiquetas, para lo cual
'pasamos el item seleccionado, a variables

horas = ComboBox1.List(ComboBox1.ListIndex)
minutos = ComboBox2.List(ComboBox2.ListIndex)
segundos = ComboBox3.List(ComboBox3.ListIndex)
If IsEmpty(horas) Then horas = 0
If IsEmpty(minutos) Then minutos = 0
If IsEmpty(segundos) Then segundos = 0
'mostramos los años
Label5 = Format((horas + (minutos / 60) + _
(segundos / 60 / 60)) / 24 / 365, "#,##0.0000") & " años"
'mostramos los meses
Label6 = Format((horas + (minutos / 60) + _
(segundos / 60 / 60)) / 24 / 30, "#,##0.0000") & " meses"
'mostramos las semanas
Label7 = Format((horas + (minutos / 60) + _
(segundos / 60 / 60)) / 24 / 7, "#,##0.0000") & " semanas"
'mostramos los días
Label8 = Format((horas + (minutos / 60) + _
(segundos / 60 / 60)) / 24, "#,##0.0000") & " días"
'mostramos las horas
Label9 = Format(horas + (minutos / 60) + _
(segundos / 60 / 60), "#,##0.0000") & " horas"
'mostramos los minutos
Label10 = Format((horas * 60) + minutos + segundos / 60, _
"#,##0.0000") & " minutos"
'mostramos los segundos
Label11 = Format((horas * 60 * 60) + (minutos * 60) + _
segundos, "#,##0") & " segundos"
'mostramos un mensaje al pie del formulario
Label12 = "Los datos presentados, están en formato decimal."
End Sub

Como veis, no tiene ninguna complejidad montar un formulario de este tipo, pues solamente tenemos que tener claro las fórmulas para convertir las horas en minutos, en segundos, etc. Aquí os dejo varios pantallazos con el formulario al cargarse, y con un ejemplo, una vez seleccionadas las horas, minutos y segundos, y tras pulsar el botón "Calcular":



Desde aquí descargar el fichero de excel, con el ejemplo que hemos visto en este artículo.



1 comentarios:

Anónimo dijo...

hola tu me podrias ayudar tengo dos planillas de en las cuales hay una tercera que quiero que deje una categoria en ella la idea es saber si esta en la lista de vulnerables y en la prioritarios y si tiene las condiciones que deje expresado "vulnerable prioritario" todo esto es consultando el n° de identificacion de los alumnos
por si te interesa ayudarme mi correo es jofre1975@msn.com

atte.
Rodrigo Jofre