¿Se puede dejar de utilizar los dos puntos para escribir la hora y trabajar solo con números?
Actualmente estoy trabajando en excel y tengo que estar introduciendo la hora muchas veces la hora (por ej. De algunas operaciones escribo en una celda la hora de inicio, en otra la hora de fin y en una tercera la resta entre estas dos para medir el tiempo. El problema que tengo es que para cada una debo usar los dos puntos (ej: 16:24) Ya tengo con formato de hora las celdas. La pregunta es si existe alguna manera de dejar de utilizar los dos puntos y trabajar solo con números (ej. 1624 o 16.24) y que sea la compu la que ponga16:24 automáticamente porque resulta tedioso estar usando la techa shift + la tecla de dos puntos para cada celda que se llena)
La verdad es que tienes razón esta macro la implemeté para los textbox que en entrada de datos en formato hora son una pesadez tener que escribir los dos puntos, pero no había tenido la necesidad de hacerlo en la misma hoja de Excel y he tenido que hacer algunas modificaciones, aquí te la pongo y te la explico: Private Sub Worksheet_Change(ByVal Target As Range) Dim celda As String Dim horas As String Dim minutos As String celda = ActiveCell.Offset(0, -1).Text horas = Left(celda, 2) minutos = Right(celda, 2) celda = horas & ":" & minutos ActiveCell.Offset(0, -1).Value = celda End Sub Vamos a ver, por tus explicaciones tu escribes la hora en una celda y luego te desplazas a la derecha con el tabulador o la flecha de dirección (evidentemente con la tecla Enter bajarías una fila en la misma columna) y en la siguiente celda vuelves a escribir otra hora y en una tercera realizas la suma o diferencia de horas, pues bien abres tu Libro de Excel pulsas Alt+F11 se abre el editor de VBA en la columna de la izquierda localiza tu hoja donde realizas la entrada de datos (Hoja1, ... la que sea) y pulsando don el botón derecho sobre ella eliges "Ver código" y copias la macro de arriba y la pegas. Los formatos de estas celdas deben ser General. La macro hace esto, tu escribes tu hora y minutos todo junto por ejemplo 1430 y al pulsar el tabulador o la flecha de dirección a la derecha, la macro pondrá los dos puntos automáticamente, 14:30 ¡OJO! Lo hará en toda la hoja. Ahora para las celdas donde realizas los cálculos debes de cambiar el formato por este por si la suma es mayor de 24 horas Formato de celda>Personalizado [H]:mm y escribes este en la ventana del formato. Si no quieres que funcione en toda la hoja tan solo en algunas celdas pones la macro así: Private Sub Worksheet_Change(ByVal Target As Range) Dim celda As String Dim horas As String Dim minutos As String If Target.Column <> 1 Then 'ESTA LINEA celda = ActiveCell.Offset(0, -1).Text horas = Left(celda, 2) minutos = Right(celda, 2) celda = horas & ":" & minutos ActiveCell.Offset(0, -1).Value = celda Else Exit Sub End If End Sub Donde te he marcado ESTA LINEA solo está para que NO funcione en la columna 1 (A) Y para elegir celdas determinadas pones esta y añades las que quieras: Dim celda As String Dim horas As String Dim minutos As String If Target.Address = "$B$1" Or Target.Address = "$C$1" Then celda = ActiveCell.Offset(0, -1).Text horas = Left(celda, 2) minutos = Right(celda, 2) celda = horas & ":" & minutos ActiveCell.Offset(0, -1).Value = celda Else Exit Sub End If End Sub >Un saludo >Julio
Gracias por tu respuesta y tu tiempo invertido en buscar una solución a mi problema, pero fíjate que aun no he podido hacer funcionar la solución que me planteaste por la razón siguiente: cuanto introduzco la hora sin puntos ej. 1430 me aparece el mensaje de error "se ha producido el error '1004´ en tiempo de ejecución: error definido por la aplicación o el objeto" y aparecen las opciones Finalizar, Depurar y Ayuda.- Cuando elijo Depurar aparece lo siguiente Private Sub Worksheet_Change(ByVal Target As Range) Dim celda As String Dim horas As String Dim minutos As String celda = ActiveCell.Offset(0, -1).Text (esto aparece de color amarillo, con una flecha) horas = Left(celda, 2) minutos = Right(celda, 2) celda = horas & ":" & minutos ActiveCell.Offset(0, -1).Value = celda End Sub
Eso ocurre porque la macro está tomando el valor que hay en la celda de la izquierda si no hay nada pues te da error. La segunda macro está pensada para todas las columnas evidentemente menos para la A porque a la izquierda no hay nada. Te dije: ... tu escribes tu hora y minutos todo junto por ejemplo 1430 y al pulsar el tabulador o la flecha de dirección a la derecha... Prueba a poner tus datos en cualquier celda pero no de la columna A y ves que ocurre. >Un saludo >Julio