elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 07:27  


Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de

+  Foro de elhacker.net
|-+  Informática
| |-+  Software (Moderador: Novlucker)
| | |-+  VBA Excel, Loop de acuerdo a fecha
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: VBA Excel, Loop de acuerdo a fecha  (Leído 1,390 veces)
edr89

Desconectado Desconectado

Mensajes: 7


Ver Perfil
VBA Excel, Loop de acuerdo a fecha
« en: 1 Septiembre 2011, 09:46 »

En cierto punto de una macro hay un Loop que elimina todos los renglones con fecha distinta a la fecha deseada, esta fecha siempre va a ser de un dia anterior al actual:

Código:
Do Until ActiveCell = "31/08/2011"
Selection.EntireRow.Delete
Loop

Hoy es 01 de Septiembre, por lo tanto la macro elimina todos los dias de agosto menos 31, lo que quiero evitar es tener que cambiar la fecha en la macro cada vez que la ejecuto, intente cambiando la fecha por:

Código:
Do Until ActiveCell = "Today()-1"

Pero no funciona, sin embargo, escribiendo la fecha en formato "dd/mm/yyyy" funciona correctamente. ¿Cuál es la forma correcta para indicar que reste un dia?

Saludos
En línea
Novlucker
Ninja y
Moderador
***
Desconectado Desconectado

Mensajes: 10.239


Yo que tu lo pienso dos veces


Ver Perfil
Re: VBA Excel, Loop de acuerdo a fecha
« Respuesta #1 en: 1 Septiembre 2011, 14:27 »

Con la función dateadd sumando un -1.


Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
http://twitter.com/novlucker

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

edr89

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: VBA Excel, Loop de acuerdo a fecha
« Respuesta #2 en: 3 Septiembre 2011, 05:28 »

Perfecto, funciona... gracias.

Código:
Do Until ActiveCell = DateAdd("d", -1, Date)
Selection.EntireRow.Delete
Loop
En línea
zosemu

Desconectado Desconectado

Mensajes: 39


Ver Perfil
Re: VBA Excel, Loop de acuerdo a fecha
« Respuesta #3 en: 5 Octubre 2011, 16:34 »

...
Hoy es 01 de Septiembre, por lo tanto la macro elimina todos los dias de agosto menos 31, lo que quiero evitar es tener que cambiar la fecha en la macro cada vez que la ejecuto, intente cambiando la fecha por:

Código:
Do Until ActiveCell = "Today()-1"

Pero no funciona, sin embargo, escribiendo la fecha en formato "dd/mm/yyyy" funciona correctamente. ¿Cuál es la forma correcta para indicar que reste un dia?
...

El problema que tenías es con el manejo de fechas, lo que haces al intentar today() -1, es restarle uno a la fecha actual pero son variables diferentes, recuerda que las fechas en VB se manejan mediante Variant, por lo que si quieres trabajar sin funciones como dateadd o datediff lo que tienes que hacer es obtener la fecha en serial, si no mal recuerdo la funcion es dateserial(yyyy,m,d) con lo que puedes obtener el serial exacto de alguna fecha y a partir de ahí trabajar con sumas, restas o lo que quieras, al finalizar solo tendrías que regresar ese número a formato variant con algo como:
Código:
fecha=format("dd/mm/yyyy")
te recomiendo que si trabajas con este tipo de números los declares como long, a fin de evitar conflictos si sobrepasan el limite de integer en la versión de VB. ;D
En línea
edr89

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: VBA Excel, Loop de acuerdo a fecha
« Respuesta #4 en: 4 Diciembre 2011, 08:49 »

El problema que tenías es con el manejo de fechas, lo que haces al intentar today() -1, es restarle uno a la fecha actual pero son variables diferentes, recuerda que las fechas en VB se manejan mediante Variant, por lo que si quieres trabajar sin funciones como dateadd o datediff lo que tienes que hacer es obtener la fecha en serial, si no mal recuerdo la funcion es dateserial(yyyy,m,d) con lo que puedes obtener el serial exacto de alguna fecha y a partir de ahí trabajar con sumas, restas o lo que quieras, al finalizar solo tendrías que regresar ese número a formato variant con algo como:
Código:
fecha=format("dd/mm/yyyy")
te recomiendo que si trabajas con este tipo de números los declares como long, a fin de evitar conflictos si sobrepasan el limite de integer en la versión de VB. ;D

Lo probaré con tiempo. ;)
En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con Do Loop
Programación Visual Basic
stork32 6 834 Último mensaje 22 Octubre 2008, 01:31
por seba123neo
[Autoit] Loop
Scripting
mubimeiquer 2 2,281 Último mensaje 13 Febrero 2009, 16:36
por gna08
Decodificar fecha en dateformat de excel [Solucionado]
PHP
WHK 2 2,381 Último mensaje 28 Abril 2009, 04:26
por WHK
Problema con loop while
Programación C/C++
miketru 10 1,068 Último mensaje 11 Septiembre 2010, 05:41
por miketru
modprobe loop en Fedora7
GNU/Linux
liveya1234 0 580 Último mensaje 18 Marzo 2011, 08:23
por liveya1234
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines