
Eso se hace fácilmente con un ciclo For… Next, siempre que sepamos cuál es la fila de la última fila ocupada. Esto lo logramos con la siguiente instrucción:
uf = Range(“A1”).End(xlDown).Row
Esto representa situarse en la celda [A1] y oprimir la combinación <Control+Flecha abajo> para bajar hasta la última celda ocupada de la columna.
De esa celda tomamos el número de fila con la propiedad Row y lo asignamos a la variable uf (por “última fila”).
Esta técnica puede fallar si en la primera fila tenemos un título y el resto de la columna está vacío. En ese caso, la variable uf recibirá como valor el número de la última fila de la hoja. Para prever esta posibilidad, podemos usar esta otra instrucción:
uf = Range(“A10000”).End(xlUp).Row
Esta instrucción equivale a subir desde la celda [A10000] hasta la primera celda ocupada que aparezca, que será la última de la columna, yendo hacia abajo.
Mediante esta técnica podemos mostrar cualquiera de los cuadros de diálogo estándar de Excel con solo indicar entre paréntesis el argumento correspondiente al cuadro deseado. Al comenzar a escribir la instrucción Application.Dialogs (se descuelga una lista con los argumentos válidos. Para que esta lista aparezca efectivamente, tenemos que dirigirnos a [Herramientas/Opciones] y, en la ficha [Editor], marcar las opciones [Lista de miembros automática] e [Información rápida automática].

Queremos recorrer esta lista desde la segunda fila (excluimos la fila de títulos) hasta la última fila ocupada. La macro debe darse cuenta de dónde termina la lista.
¡Muchas gracias!
Si hay algo que extraño de cuando compraba la PCU es la didáctica y entretenida sección de soluciones que presentaba Claudio Sánchez. Me quito el sombrero recordando esos momentos donde este caballero nos daba las soluciones a problemas simples o complejos y nos sacaba de algún apuro a los no iniciados en las artes Excelíacas. ¡chapeau!