Hola,
Bueno, para empezar, Excel guarda las horas como fechas. En realidad si solo escribes la hora, Excel almacenará el número correspondiente a la hora que has escrito y el día 1 de enero del año 1900
En segundo lugar cuando restas 3, excel resta tres días (no tres horas) con lo que obtendrás la misma hora del día 28/12/1889
Para restar tres horas hay que quitar 0.125
¿Y de donde sale ese número?
Muy sencillo, escribe 3:00 en una celda y a continuación cambias la celda a formato General. Aparecerá escrito 0.125 o también la ciento veinticinco aba parte de un día, es decir 3 horas ;-)
Se puede calcular también simplemente dividiendo 3 entre 24 horas que tiene un día.
3/24=0.125
De modo que escribe:
restar = Sheets("Hoja1").Range("M6") - 0.125
y en restar tendrás la hora que buscas, luego ya puedes volcar el contenido de restar donde te haga falta.
Por otro lado lo del OnTimer
lo que va detrás de la coma es el nombre de la macro que quieres ejecutar.
Por ejemplo, haces una macro que se llame aviso en un modulo aparte:
Sub aviso()
MsgBox ("Es la hora de comer")
End Sub
y después en el Workbook_Open de ThisWorkbook llamas a la macro de esta forma:
Private Sub Workbook_Open()
Application.OnTime TimeValue("15:00:00"), "aviso"
End Sub
A las 3 de la tarde se ejecutará la macro aviso que consiste en mostrar la ventanita esa de: "Es la hora de comer"
;-)
Saludos,
Pedro