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:
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
Publicar un comentario