Buenas, me gustaría que me dijeran la linea para seleccionar la primera celda vacía de una columna. ¿Y ya que estamos como se hace para que una macro se ejecute siempre que se abra un libro? ¿Y siempre que se cierre? Y ya que me estoy emocionando, ¿se puede hacer una macro que se ejecute al abrir un libro con una característica en el nombre del libro? Por ejemplo, que se ejecute automáticamente al abrir alchivos xls que su nombre contengan la cadena "viernes" (viernes2005.xls). Gracias por todo y aunque no las sepan todas, si saben algunas agradecería que me las pasaran. Gracias de nuevo
Si te parece, hacemos una cosa: te contesto a una pregunta, me puntúas, y te contesto a otra, me vuelves a puntuar, y te vuelvo a contestar, ¿OK? Es que a veces hay usuarios que no finalizan, y da mucha rabia haberse tirado una hora preparando su respuesta y que luego no quieran finalizarla. No te conozco aún, pero si eres serio, prometo a cambio darte siempre trato preferencial y esforzarme en las respuestas, ¿Ok?. Bien, para tu primera pregunta, cómo seleccionar la primera celda vacía de una columna, hay varias opciones, que dependerán del caso: A) Si en esa columna no hay celdas en blanco entre los datos (por ej., se han rellenado de A1 a A50, y ninguna está vacía) puedes usar la siguiente sentencia: Range("A1").End(xlDown).Offset(1, 0).Select Te explico la sentencia por partes: Range("A1") es la celda donde empiezan los datos, deberás cambiar la referencia por la que corresponda. End(xlDown) equivale a hacer con el teclado Control+Flacha abajo, y lo que hace es situarse en la útima celda con datos. Offset(1,0) sirve para desplazarse una celda abajo, y por tanto nos sitúa en la primera celda vacía de la columna. B) En caso de que existan celdas en blanco, entonces yo utilizo la siguiente sentencia: Range("A65536"). End(xlUp). Offset(1, 0). Select. Como supongo sabrás, cada hoja de Excel tiene 65536 filas, por tanto, A65536 nos coloca en la última celda de la columna A. Sólo que ahora utilizamos End(xlUp), que lo que hace es subir a la primera celda con datos (es equivalente a pulsar Control+Flecha Arriba). C) Y si fueses una persona muy, pero que muy previsora, y pensaras: bien, ahora excel tiene 65536 filas, pero ¿Quién me dice a mí si quizás en el futuro salga una nueva versión con más filas? ¿Tendré qué cambiar todas mis macros? Pues para ese caso, utiliza esta otra sentencia: Range("A" & ActiveSheet.Rows.Count).End(xlUp).Offset(1, 0).Select Te explico: ActiveSheet. Rows. Count lo que hace esta parte es contar cuántas filas tiene la hoja activa, como ahora mismo (Excel tiene el mismo número de filas desde la versión 97) el número es 65536, la sentencia Range("A" & ActiveSheet. Rows. Count) nos sitúa en la celda A65536, pero si en el futuro fuesen 70000, nos situaría en A70000. En fin.
Bueno, te diré que a parte de usuario también soy experto y lo hago por ayudar, no porque me puntúen el máximo, ¿o acaso hay premio? :P Otra cosa es que no pretendo que nadie este 1 hora preparando las respuestas a mi pregunta, o se sabe o no se sabe, pero no veo necesario eso. Otra cosa es que mis valoraciones son siempre objetivas. Y para acabar, ¿si finalizo la pregunta en que hilo responderás las cuestiones restantes? De todos modos muchas gracias, haré la misma pregunta pero sin lo que tu ya me has aclarado. QUE vaya bien