41 formas de hacer referencia y seleccionar celdas en Excel

Una de las primeras tareas que he enseñado en mis cursos presenciales ha sido a seleccionar celdas. Antes de nada, he de decirte que, para trabajar con celdas, no es necesario seleccionarlas, pero los que te muestro ahora te servirán para entender cómo funciona la selección de objetos.

Hacer referencia a una celda (seleccionándola o no) te permitirá trabajar cambiar sus propiedades o ejecutar métodos

1. Cómo hacer referencia a todas las hojas del libro activo

ActiveWorkbook.Sheets.Select

2. Cómo hacer referencia a la hoja “Presupuestos”

Sheets("Presupuestos").Select

3. Cómo hacer referencia a la hoja que se encuentra en la tercera posición sin importar el nombre

Sheets(2).Select

4. Cómo hacer referencia a la hoja anterior a la hoja activa

ActiveSheet.Previous.Select

5. Cómo hacer referencia a la hoja siguiente a la activa

ActiveSheet.Next.Select

6. Cómo hacer referencia a una celda de otro libro

Application.Goto Workbooks("Libro1.xlsm").Sheets("Hoja1").Cells(5, 3)

7. Cómo hacer referencia a una hoja grabando previamente el nombre en una variable

Dim NombreHoja As String
NombreHoja = ActiveSheet.Name

8. Cómo hacer referencia a las hojas anterior y posterior a la activa utilizando una variable

NombreHoja = ActiveSheet.Previous.Name
NombreHoja = ActiveSheet.Next.Name

9. Cómo hacer referencia a los índices de las hojas anterior y posterior a la activa

Dim IndiceHoja As Byte
IndiceHoja = ActiveSheet.Index ‘ Hoja activa
IndiceHoja = ActiveSheet.Previous.Index ‘ Hoja anterior
IndiceHoja = ActiveSheet.Next.Index ‘ Hoja posterior

10. Cómo seleccionar la celda C6 de la Hoja 2

Sheets("hoja2").Range("C6").Select

11. Otra forma de seleccionar la celda C6

Sheets("Hoja2").Cells(6, 3).Select

12. Otra forma más de seleccionar la celda C6

Sheets(“Hoja2”).[C6].Select

13. Cómo seleccionar el rango de celdas de A1 a B8

Range("A1:B8").Select

14. Otra forma de seleccionar el rango de celdas de A1 a B8

Range(Cells(1, 1), Cells(8, 2)).Select

15. Otra forma más de seleccionarel rango de A1 a B8

Range("A1", "B8").Select

16. Cómo seleccionar toda la columna C

Range("C:C").Select

17. Cómo seleccionar todas las celdas de las columnas desde la A hasta la D

Range("A:D").Select

18. Cómo seleccionar todas las celdas de la fila 6

Range("6:6").Select

19. Cómo seleccionar todas las celdas desde la fila 2 a la fila 6

Range("2:6").Select

20. Cómo seleccionar dos o más rangos a la vez (similar a utilizar la tecla Ctrl).

Application.Union(Range("A3: C8"), Range("F3: H19")).Select

21. Cómo seleccionar dos o más columnas no contiguas de longitud variable

Set a = Range("A1", Range("A1").End(xlDown))
Set b = Range("E1", Range("E1").End(xlDown))
Union(a, b).Select

22. Cómo aumentar un rango dado en 7 columnas y 6 filas y seleccionarlo

Range("D10").Resize(7, 6).Select

23. Cómo seleccionar un rango mayor al actual estableciendo la cantidad de filas y columnas a agregar

Range("C2:D10").Select
Selection.Resize(Selection.Rows.Count + 5, Selection.Columns.Count + 4).Select

24. Cómo seleccionar desde la celda A1 hasta la última celda con datos hacia abajo (igual que seleccionar la celda A1 y pulsar Ctrl+Mayús+Flecha abajo)

Range("A1", Range("A1").End(xlDown)).Select

25. Otra forma de hacer la selección anterior

Range("A1:" & Range("A1").End(xlDown).Address).Select

26. Cómo seleccionar desde la celda A5 hasta la última celda con datos hacia la derecha (igual que pulsar Ctrl+Mayús+Flecha derecha)

Range("A5", Range("A5").End(xlToRight)).Select

27. Otra forma de hacer la selección anterior

Range("A5:" & Range("A5").End(xlToRight).Address).Select

28. Cómo seleccionar desde la celda H10 hasta la última celda con datos hacia la izquierda (igual que pulsar Ctrl+Mayús+Flecha izquierda)

Range("H10", Range("H10").End(xlToLeft)).Select

29. Otra forma de hacer la selección anterior

Range("H10:" & Range("H10").End(xlToLeft).Address).Select

30. Seleccionar desde la celda H10 hasta la última celda con datos hacia arriba (igual que pulsar Ctrl+Mayús+Flecha arriba)

Range("H10", Range("H1048576").End(xlUp)).Select

31. Otra forma de hacer la selección anterior

Range("H10:" & Range("H1048576").End(xlUp).Address).Select

32. Cómo seleccionar con variables y Cells un rango hacia la derecha

Sheets("Previsiones").Range((Cells(Resultado, 1)), Range((Cells(Resultado, 1)), Cells(Resultado, 1)).End(xlToRight)).Select

33. Cómo seleccionar  la última celda con datos

ActiveSheet.Range("B1").End(xlDown).Offset(1, 0).Select

34. Cómo seleccionar la última columna con datos

ActiveSheet.Range("B1").End(xlDown).Offset(0, 1).Select

35. Cómo hacer referencia a la dirección de la última celda con datos hacia abajo

Direcc = Selection.Cells(1, 1).Address

36. Cómo hacer referencia al número de la última fila con datos

UltimaFila = Range("A1").End(xlDown).Row

37. Cómo hacer referencia al número de la última columna con datos

UltimaColumna = Range("A1").End(xl ToRight).Column

38. Cómo seleccionar y combiar combinar las celdas seleccionadas

Range("B1:E1").Select
Selection.Merge

39. Cómo seleccionar y descombinar las celdas seleccionadas

Range("B1:E1").Select
Selection.UnMerge

40. Cómo seleccionar el rango complete donde se encuentra la celda activa

ActiveCell.CurrentRegion.Select

41. Cómo seleccionar la última celda con datos sin importar si hay celdas vacías en medio

ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Select

 

 

En la mayoría de las ocasiones, elegir una forma u otra de seleccionar celdas con VBA va a depender exclusivamente de tus gustos personales. Otras veces el contexto de la programación te irá diciendo cuál debes utilizar.

Por favor, comparte el artículo si te ha gustado.

Respuestas

  1. Excelente ejercicio.
    Gracias por compartirlo
    será de gran utilidad.
    Saludos.
    Danilo

  2. Gracias Sergio me ha sido de mucha ayuda,te quiero pedir un favor soy agente de seguros y algunas polizas se vencen cada mes, otras cada tres meses como hago para llevar ese control de vencimientos. Gracias

    1. hola sergio, primero gracia por compartir tus conocimientos, disfruto todos tus gaps. deseo consultar si esposible.Tengo una plantilla excel, con las hojas nombradas por los meses y año, es decir “Enero 2010″…”Dic 2010”, como no quiero volver a renombrar todas las hojas una por una manualmente, con el año siguiente “Enero 2011″…”Dic 2011”: ¿comó automarizo el renombrar todas las hojas de la plantilla, de una sola vez?
      se entiende verdas??
      Gracias

  3. Hola
    ¿Se podrá poner en la celda C1 una formula que escriba en B1 el contenido de la celda A1?
    Sucede que en la columna B puedo necesitar agregar datos directos en caso que A1 no no contenga ningún dato pero no quiero perder la formula por eso no quiero poner la formula directo en B1. No se si me explico.

    Gracias

    1. Valentino, tal como lo propones, no se puede. Debes escribir la fórmula en la misma celda en la que quieras que aparezca el resultado. Sólo se me ocurre que escribas en B1 una fórmula condicional (y la arrastres hacia abajo) que escriba el valor de A1. Si necesitas escribir en la columna B, simplemente sustituye la fórmula por el valor. La fórmula no la perderás porque ya la has copiado en las celdas de abajo.

  4. hola que tal, excelente, muy buena la aportacion nos ayudaste muchisimo. Yo tengo una pregunta, se como se podra hacer esto mismo pero con otro archivo (sin que este compartido, ya que contiene macros y no se pueden estos) y ademas este archivo estara abierto. Solo deseo consultar un rango de una hoja y mostrarla en otro archivo nuevo o existente. mil gracias por la atencion.

    1. Btosmix, simplemente escribe el signo igual y a continuación haces clic en la celda del libro que quieras vincular.

  5. hola, yo quisiera saber (si es posible) como ver el contenido de una celda a través del resultado de una operación.
    intentare explicarme, yo se que tengo organizados unos datos en bloques de 20 filas y el dato que me interesa esta en la columna L fila 20 de cada bloque, si pongo en num de bloque y lo multiplico por 20 sabria exactamente en que posición tengo los datos, ¿ pero como muestro su contenido?

    1. Julián, utiliza la función DESREF para ello. Si necesitas auxiliarte de otra función para encontrar la ubicación, usa INDIRECTO. Espero haberte ayudado.

  6. Hola, gracias por compartir tu conocimiento, a sido de gran ayuda. Quiero compartir con todos una solución que me tomo un poco de tiempo encontrar:

    Supongamos que es necesario seleccionar una fila completa, como en el punto 18. Pero esta selección es en forma dinámica, o sea, se tiene que pasar el numero que identifica dicha fila.

    Estas son tres posibles soluciones:
    1)_La Rebuscada

    Dim t As String ‘Cadena que contendrá el numero de la fila.
    Dim n As Integer ‘ Variable que contiene el numero de fila.

    n = 6
    t = n & “:” & n
    Range(t).Select

    2)_La Adecuada

    n = 6
    Rows(n).Select

    3)_La misma que la anterior, pero explicita.

    n = 6
    Rows(n).EntireRow.Select

    Espero haber sido de ayuda.

  7. Que bueno! lástima de no haber leido estas ayudas antes de haber estado cientos de horas haciendo macros con soluciones mucho menos elegantes

    🙂

    gracias

Los comentarios están cerrados.