Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Macro para horas

205 views
Skip to first unread message

pinkiluis

unread,
Jun 22, 2012, 2:54:16 AM6/22/12
to
¡ Hola ! Que tal compañeros, tengo unas dudas muy grandes la verdad
tengo poco programando en VB EXCEL, pero tengo los conocimientos necesarios
para
entender y digerir cierta informacion, pero como ya mencione tengo poco en este
hambito y no he podido resolver algunos problemas el primero es el siguiente.

1.- Quiero restarle 3 horas a un valor de una celda en especifico x ejemplo en
la celda M12 tengo el valor de 17:00 HR y quisiera restarle 3 horas asi por
defauld 3 horas y lo que tengo es esto de codigo

Sub auto_open()
Dim restar As Date

restar = Sheets("Hoja1").Range("M6")- 3

End Sub

Aqui donde 3 deben de ser 3HR pero no se como hacer esa declaracion xke lo que
voy hacer es recorrer un rango de celdas y restarles a todas 3 horas y las
estare almacenando en otro lugar. buenosi alguien sabe como hacer esa
declaracion por favor le ruego pueda ayudarme yo ya he buscado muchos ejemplos
en internet pero no encuentro nada parecido.

y ahora otro problema que tengo con respecto a lo mismo de las horas yo quiero
a
una cierta hora determinada por ejemplo a las 3:00 pm me envie un mensaje por
ej. ya es hora de ir a comer

Application.OnTime TimeValue("15:00:00"), "Es hora de comer"

esta es la aplicacion que utilizo pero cuando llega a esa hora me dice manda un
mensaje que dice que la macro no se puede ejecutar por que no esta habilitada y
me imagino que tiene que haber alguna funcion que deje habilitada la macro
mientras el documento se encuentre abierto.

bueno la verdad es que creo que son cosas aparentemente faciles las cuales no
puedo resolver y me estan dando un verdadero dolor de cabeza, espero que
ustedes
puedan ayudarme a resolverlas y de antemano les agradesco infinitamente su
ayuda
muchisimas gracias por su atencion.

Pedro F. Pardo

unread,
Jun 23, 2012, 9:01:35 AM6/23/12
to
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
0 new messages