Macro para horas

22/06/2012 - 08:56 por pinkiluis | Informe spam
¡ 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.
 

Leer las respuestas

#1 Pedro F. Pardo
23/06/2012 - 15:01 | Informe spam
El viernes, 22 de junio de 2012 07:54:16 UTC+1, pinkiluis escribió:
¡ 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.



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

Preguntas similares