Autor
|
Tema: VBA Excel, Loop de acuerdo a fecha (Leído 3,715 veces)
|
edr89
Desconectado
Mensajes: 105
|
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: 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: 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
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
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 "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
edr89
Desconectado
Mensajes: 105
|
Perfecto, funciona... gracias. Do Until ActiveCell = DateAdd("d", -1, Date) Selection.EntireRow.Delete Loop
|
|
|
En línea
|
|
|
|
zosemu
Desconectado
Mensajes: 39
|
... 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: 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: 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.
|
|
|
En línea
|
|
|
|
edr89
Desconectado
Mensajes: 105
|
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: 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. Lo probaré con tiempo.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda con Do Loop
Programación Visual Basic
|
stork32
|
6
|
2,999
|
22 Octubre 2008, 01:31 am
por seba123neo
|
|
|
[Autoit] Loop
Scripting
|
mubimeiquer
|
2
|
5,710
|
13 Febrero 2009, 16:36 pm
por gna08
|
|
|
Decodificar fecha en dateformat de excel [Solucionado]
PHP
|
WHK
|
2
|
10,740
|
28 Abril 2009, 04:26 am
por WHK
|
|
|
Problema con loop while
« 1 2 »
Programación C/C++
|
miketru
|
10
|
6,401
|
11 Septiembre 2010, 05:41 am
por miketru
|
|
|
buscar varios datos con fecha de proximidad (EXCEL)
Foro Libre
|
Zeroql
|
0
|
2,075
|
4 Mayo 2013, 17:54 pm
por Zeroql
|
|