Como seleccionar ultimo elemento de un desplegable o campo de una tabla dinámica con macro en excel.

Hace unas semanas te hice una consulta para poder seleccionar mediante macro la ultima fecha de un desplegable de fechas de una tabla dinámica. Me comentaste de hacerlo con la formula date()-1 para que la macro seleccionara la fecha del día anterior...

Te quería hacer otras dos consultas que me paran la macro cuando la ejecuto (macro grabada con Excel), la primera es que este informe es diario con información del día anterior y también lo he hecho semanal y mensual, solo he agregado los días en semana o meses y la diferencia es que el desplegable de la tabla ya no seria día sino semana (1,2,3...) o mes.

¿La formula date() devuelve la fecha actual hay algo similar para week o month?

La cosa que más me para la macro ahora mismo se da cuando elimino una pestaña o quiero cerrar un archivo, si esto lo grabo con la macro desde excel, al ejecutarla cuando llega el paso de eliminar pestaña o cerrar/abrir archivo se me para y me aparece el cartelillo de "desea eliminar la pestaña" o "el archivo se va a cerrar desea guardar cambios" y tengo que clicar manualmente con el mouse en aceptar o "no". ¿Podrías resolverme esta tontería que yo no se por favor?

Disculpa que robe tu tiempo con estas dudas, para mi es la manera más rápida y eficaz de resolverlas. Si me pudieses redirigir a alguna web o manual básico para poder resolverme yo este tipo de dudas busco un poco mas por mi cuenta.

1 Respuesta

Respuesta
1

La primera parte de tu pregunta no la entiendo, date te devuelve la fecha del sistema. ¿Qué te gustaría que te regresara week? ¿O month?.

La segunda parte de tu pregunta se resuelve con la sentencia

Application.DisplayAlerts = False

Si pones esto al principio de una macro, la hoja no te pedirá confirmar ninguna operación.

Bay

Ok, pongo esa sentencia al comenzar la macro.

Siguiendo con lo mismo, al hacer la macro con excel si hago un filtro en datos de columna para eliminar por ej todos las lineas donde esa columna tenga cero, al cambiar la cantidad de datos, aumentando el numero de lineas, de la base de datos la macro me hace bien el filtro pero siempre me elimina el rango que grabe con la macro, necesitaría que al hacer filtro por una columna Z y valor 0 me eliminase todas las lineas donde la columna Z tuviese el valor 0. Puedes darme un truquillo?

Y la ultima cosa que he detectado al lanzar la macro, es que la base viene de un txt y los números vienen por ej 1.12, con la macro cambio . por , y le doy formato numero, hasta hay todo bien pero cuando lanzo la macro ese campo no se porque se me queda con iconito verde y me pone que es un numero almacenado como texto o va precedido de un apostrofe, se puede seleccionar toda la fila y darle al icono de aviso para que cambie toda la columna a numero pero en macro eso no se graba y cambiar el formato a numero otra vez no sirve. Si entro en una celda le doy a F2 y intro se cambia automáticamente pero son muchas celdas. No se si me he explicado del todo bien, sino pídeme aclaración. Puedes arreglármela sin tener que buscar otra forma de hacer la macro que esta prácticamente construida?

Muchas gracias de nuevo,

Un saludo.

...Si hago un filtro en datos de columna para eliminar por ej todos las lineas donde esa columna tenga cero, al cambiar la cantidad de datos, aumentando el numero de lineas, ¿de la base de datos la macro me hace bien el filtro pero siempre me elimina el rango que grabe con la macro...? Cuando haces un filtro no aumenta nunca el numero de lineas lo normal es que disminuya, porque solo se muestran los datos que cumplen con la condición del filtro, no entiendo que quisiste decir.

Por otra parte, ¿qué rango grabaste con la macro?. ¿Sera qué quieres decir que borras el rango donde esta guardada la macro?, si esto es así no borres las filas borra las celdas.

Con respecto a que la columna z te muestre todas las filas distintas de 0 utiliza <>0

En cuanto a la ultima parte, ¿por qué quieres que sea numerico?

Hola Surtidora, disculpa que no me haya explicado bien, cuando grabo la macro simplemente grabo el proceso que hago manualmente para luego ejecutarlo de forma automática y evitar errores o olvidos. Tengo una base de datos no siempre tiene el mismo tamaño de hay hago formulas en colunmas adyacentes y arrastro rango hasta 60.000 lineas para que todas las lineas con datos de la base tengan sus formulas en las colunmas, cuando no hay datos la formula =0 y entonces hago un filtro de una columna con formula por el valor 0 y elimino todas las lineas con valor 0 de la colunma con formula. Para eso hago crtl+shift y cursor para seleccionar el rango de datos, la macro graba ese rango, si hago el rango mas grande por ej hasta 60.000 lineas para asegurarme de que elimina todo la macro es demasiado pesada y me da error, puedo usar alguna formula para hacer un filtro por valor cero y que me elimine todas las lineas por debajo del encabezado de la tabla de datos? Luego quito el filtro una vez eliminada las lineas con valor 0 en la columna con formula y solo queda la base de datos con formulas con resultado, de hay hago una tabla dinamica..etc.. sino borro los ceros me da error en la tabla. En cuanto a los datos si quiero que sea un numero sino las formulas me dan error al entender que esas celdas son texto o van seguidas de una "apostrofe" o algo asi.

Espero haber sido capaz de explicarme un poco mejor, si me das alguna instrucción seguro me servira de ayuda.

Gracias.

No estoy muy seguro de haber entendido cabalmente tu necesidad pero te envío un código que podría servirte si entendí bien. Estoy suponiendo que mis datos se encuentran en el rango B2:C9, sun dos columnas de números en el rango A2:A9 guardo la suma de los datos de la columna b+c, el código que emplearía es:

Sub prueba()

' prueba Macro

' Acceso directo: CTRL+p

Range("A2").Select

Do While ActiveCell.Offset(0, 1).Value <> 0

ActiveCell.Value = ActiveCell.Offset(0, 1).Value + ActiveCell.Offset(0, 2).Value

ActiveCell.Offset(1#).Select

Loop

End Sub

Lo que puedes hacer es decirle

1.- Grabar una macro.

2.- Llamarla prueba

3.- Decir que su método abreviado es P

4.- Hacer cualquier cosa.

5.- Detener la macro

6.- Entrar a editar la macro

7.- Borrar todo lo que tenga

8.- Copiar el código que te acabo de dar.

Pruébalo si hace lo que quieres que bueno si no dime cual fue el problema con esta macro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas