Referencias, rangos y objetos de Excel
El dominio Referencias, rangos y objetos de Excel comprueba que sabes dirigirte a la celda correcta sin depender de lo que el usuario tenga seleccionado. Casi todos los errores 1004 del examen nacen aquí.
Jerarquía de objetos
Application > Workbooks("Libro.xlsx") > Worksheets("Datos") > Range("A1"). Cada nivel es una colección o un objeto: Sheets incluye también gráficos, mientras que Worksheets solo hojas. Range acepta notación A1 (Range("A1:C10")), dos esquinas (Range(Cells(1,1), Cells(10,3))) o nombres definidos. Cells(fila, columna) invierte el orden respecto a la notación A1: Cells(3,2) es B3.
Propiedades que se examinan
.Value lee o escribe el contenido; .Formula guarda la fórmula como texto; .Text devuelve lo que se ve según el formato; .Address, .Row, .Column y .Count describen el rango. Las referencias no cualificadas (Range("A1"), ActiveCell, Selection) apuntan a la hoja y al libro activos, y fallan si el usuario cambia de ventana.
Ejemplo razonado
Dim ultima As Long
ultima = Cells(Rows.Count, 1).End(xlUp).Row
Range("A" & ultima + 1).Value = "Total"
Rows.Count devuelve 1.048.576 en un libro .xlsx; desde ahí End(xlUp) sube hasta la última celda con datos de la columna A. Se usa Long porque la fila supera el límite de Integer. Trampa: si la columna está vacía, el resultado es la fila 1 y conviene comprobar antes Cells(1,1) <> "".
Errores que cuestan puntos
Olvidar Set al asignar un objeto (Set r = Range("A1")), lo que provoca el error 91; escribir Range("A1").Value cuando se pretendía una referencia; confundir el orden de Cells(fila, columna); y usar ActiveCell en lugar de una referencia explícita al libro y a la hoja.