Selección de celdas o rangos mediante procedimientos de Visual Basic en Excel

Microsoft proporciona ejemplos de programación con fines ilustrativos únicamente, sin ninguna garantía, ya sea expresa o implícita. Esto incluye, entre otras, las garantías implícitas de comerciabilidad e idoneidad para un fin determinado. Se considera que está familiarizado con el lenguaje de programación que se muestra y con las herramientas para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden explicarle la funcionalidad de un determinado procedimiento, pero no modificarán estos ejemplos para ofrecer mayor funcionalidad ni crearán procedimientos adaptados a sus necesidades específicas. En los ejemplos de este artículo se usan los métodos de Visual Basic enumerados en la tabla siguiente.

Method             Arguments
------------------------------------------
Activate           none
Cells              rowIndex, columnIndex
Application.Goto   reference, scroll
Offset             rowOffset, columnOffset
Range              cell1
                   cell1, cell2
Resize             rowSize, columnSize
Select             none
Sheets             index (or sheetName)
Workbooks          index (or bookName)
End                direction
CurrentRegion      none

En los ejemplos de este artículo se usan las propiedades de la tabla siguiente.

Property         Use
---------------------------------------------------------------------
ActiveSheet      to specify the active sheet
ActiveWorkbook   to specify the active workbook
Columns.Count    to count the number of columns in the specified item
Rows.Count       to count the number of rows in the specified item
Selection        to refer to the currently selected range

Cómo seleccionar una celda en la hoja de cálculo activa

Para seleccionar la celda D5 en la hoja de cálculo activa, puede usar cualquiera de los ejemplos siguientes:

ActiveSheet.Cells(5, 4).Select
-or-
ActiveSheet.Range("D5").Select

Cómo seleccionar una celda en otra hoja de cálculo en el mismo libro

Para seleccionar la celda E6 en otra hoja de cálculo del mismo libro, puede usar cualquiera de los ejemplos siguientes:

Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(6, 5)
   -or-
Application.Goto (ActiveWorkbook.Sheets("Sheet2").Range("E6"))

O bien, puede activar la hoja de cálculo y, a continuación, usar el método 1 anterior para seleccionar la celda:

Sheets("Sheet2").Activate
ActiveSheet.Cells(6, 5).Select

Cómo seleccionar una celda en una hoja de cálculo en un libro diferente

Para seleccionar la celda F7 en una hoja de cálculo de un libro diferente, puede usar cualquiera de los ejemplos siguientes:

Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Cells(7, 6)
-or-
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("F7")

O bien, puede activar la hoja de cálculo y, a continuación, usar el método 1 anterior para seleccionar la celda:

Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Cells(7, 6).Select

Cómo seleccionar un rango de celdas en la hoja de cálculo activa

Para seleccionar el rango C2:D10 en la hoja de cálculo activa, puede usar cualquiera de los ejemplos siguientes:

ActiveSheet.Range(Cells(2, 3), Cells(10, 4)).Select
ActiveSheet.Range("C2:D10").Select
ActiveSheet.Range("C2", "D10").Select

or

ActiveSheet.Range(ActiveSheet.Cells(2, 3), ActiveSheet.Cells(10, 4)).Select

or, alternatively, it could be simplified to this:

Range(Cells(2, 3), Cells(10, 4)).Select

Cómo seleccionar un rango de celdas en otra hoja de cálculo en el mismo libro

Para seleccionar el rango D3:E11 en otra hoja de cálculo del mismo libro, puede usar cualquiera de los ejemplos siguientes:

Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3:E11")
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3", "E11")

O bien, puede activar la hoja de cálculo y, a continuación, usar el método 4 anterior para seleccionar el rango:

Sheets("Sheet3").Activate
ActiveSheet.Range(Cells(3, 4), Cells(11, 5)).Select

Cómo seleccionar un rango de celdas en una hoja de cálculo en un libro diferente

Para seleccionar el rango E4:F12 en una hoja de cálculo de un libro diferente, puede usar cualquiera de los ejemplos siguientes:

Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4:F12")
Application.Goto _
      Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4", "F12")

O bien, puede activar la hoja de cálculo y, a continuación, usar el método 4 anterior para seleccionar el rango:

Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
   ActiveSheet.Range(Cells(4, 5), Cells(12, 6)).Select

Cómo seleccionar un rango con nombre en la hoja de cálculo activa

Para seleccionar el rango con nombre "Test" en la hoja de cálculo activa, puede usar cualquiera de los ejemplos siguientes:

Range("Test").Select
Application.Goto "Test"

Cómo seleccionar un rango con nombre en otra hoja de cálculo en el mismo libro

Para seleccionar el rango con nombre "Test" en otra hoja de cálculo del mismo libro, puede usar el ejemplo siguiente:

Application.Goto Sheets("Sheet1").Range("Test")

O bien, puede activar la hoja de cálculo y, a continuación, usar el método 7 anterior para seleccionar el rango con nombre:

Sheets("Sheet1").Activate
Range("Test").Select

Cómo seleccionar un rango con nombre en una hoja de cálculo en un libro diferente

Para seleccionar el rango con nombre "Test" en una hoja de cálculo de un libro diferente, puede usar el ejemplo siguiente:

Application.Goto _
   Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Test")

O bien, puede activar la hoja de cálculo y, a continuación, usar el método 7 anterior para seleccionar el rango con nombre:

Workbooks("BOOK2.XLS").Sheets("Sheet2").Activate
Range("Test").Select

Cómo seleccionar una celda relativa a la celda activa

Para seleccionar una celda de cinco filas a continuación y cuatro columnas a la izquierda de la celda activa, puede usar el ejemplo siguiente:

ActiveCell.Offset(5, -4).Select

Para seleccionar una celda que tenga dos filas y tres columnas a la derecha de la celda activa, puede usar el ejemplo siguiente:

ActiveCell.Offset(-2, 3).Select

Nota:

Se producirá un error si intenta seleccionar una celda que esté "fuera de la hoja de cálculo". El primer ejemplo mostrado anteriormente devolverá un error si la celda activa está en las columnas A a D, ya que mover cuatro columnas a la izquierda llevaría la celda activa a una dirección de celda no válida.

Cómo seleccionar una celda relativa a otra (no activa)

Para seleccionar una celda de cinco filas a continuación y cuatro columnas a la derecha de la celda C7, puede usar cualquiera de los ejemplos siguientes:

ActiveSheet.Cells(7, 3).Offset(5, 4).Select
ActiveSheet.Range("C7").Offset(5, 4).Select

Cómo seleccionar un rango de celdas de desplazamiento de un rango especificado

Para seleccionar un rango de celdas que tenga el mismo tamaño que el rango con nombre "Test", pero que se desplaza cuatro filas hacia abajo y tres columnas a la derecha, puede usar el ejemplo siguiente:

ActiveSheet.Range("Test").Offset(4, 3).Select

Si el rango con nombre está en otra hoja de cálculo (no en la activa), active primero esa hoja de cálculo y, a continuación, seleccione el rango mediante el ejemplo siguiente:

Sheets("Sheet3").Activate
ActiveSheet.Range("Test").Offset(4, 3).Select

Cómo seleccionar un rango especificado y cambiar el tamaño de la selección

Para seleccionar el intervalo con nombre "Base de datos" y, a continuación, ampliar la selección en cinco filas, puede usar el ejemplo siguiente:

Range("Database").Select
Selection.Resize(Selection.Rows.Count + 5, _
   Selection.Columns.Count).Select

Cómo seleccionar un rango especificado, desplazarlo y cambiar su tamaño

Para seleccionar un intervalo de cuatro filas a continuación y tres columnas a la derecha del intervalo con nombre "Base de datos" e incluir dos filas y una columna más que el intervalo con nombre, puede usar el ejemplo siguiente:

Range("Database").Select
Selection.Offset(4, 3).Resize(Selection.Rows.Count + 2, _
   Selection.Columns.Count + 1).Select

Selección de la unión de dos o más intervalos especificados

Para seleccionar la unión (es decir, el área combinada) de los dos intervalos con nombre "Test" y "Sample", puede usar el ejemplo siguiente:

Application.Union(Range("Test"), Range("Sample")).Select

Nota:

que ambos rangos deben estar en la misma hoja de cálculo para que funcione este ejemplo. Tenga en cuenta también que el método Union no funciona entre hojas. Por ejemplo, esta línea funciona bien.

Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet1!C3:D4"))

pero esta línea

Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet2!C3:D4"))

devuelve el mensaje de error:

Error en el método Union de la clase de aplicación

Cómo seleccionar la intersección de dos o más intervalos especificados

Para seleccionar la intersección de los dos intervalos con nombre "Test" y "Sample", puede usar el ejemplo siguiente:

Application.Intersect(Range("Test"), Range("Sample")).Select

Tenga en cuenta que ambos rangos deben estar en la misma hoja de cálculo para que funcione este ejemplo.

Los ejemplos 17-21 de este artículo hacen referencia al siguiente conjunto de datos de ejemplo. Cada ejemplo indica el rango de celdas de los datos de ejemplo que se seleccionarían.

A1: Name    B1: Sales    C1: Quantity
A2: a       B2: $10      C2: 5
A3: b       B3:          C3: 10
A4: c       B4: $10      C4: 5
A5:         B5:          C5:
A6: Total   B6: $20      C6: 20

Cómo seleccionar la última celda de una columna de datos contiguos

Para seleccionar la última celda de una columna contigua, use el ejemplo siguiente:

ActiveSheet.Range("a1").End(xlDown).Select

Cuando se usa este código con la tabla de ejemplo, se seleccionará la celda A4.

Cómo seleccionar la celda en blanco en la parte inferior de una columna de datos contiguos

Para seleccionar la celda debajo de un rango de celdas contiguas, use el ejemplo siguiente:

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

Cuando se usa este código con la tabla de ejemplo, se seleccionará la celda A5.

Cómo seleccionar un rango completo de celdas contiguas en una columna

Para seleccionar un rango de celdas contiguas en una columna, use uno de los ejemplos siguientes:

ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select
   -or-
ActiveSheet.Range("a1:" & ActiveSheet.Range("a1"). _
      End(xlDown).Address).Select

Cuando se usa este código con la tabla de ejemplo, se seleccionarán las celdas A1 a A4.

Selección de un rango completo de celdas no contiguas en una columna

Para seleccionar un rango de celdas que no son contiguas, use uno de los ejemplos siguientes:

ActiveSheet.Range("a1",ActiveSheet.Range("a" & ActiveSheet.Rows.Count).End(xlUp)).Select
   -or-
ActiveSheet.Range("a1:" & ActiveSheet.Range("a" & ActiveSheet.Rows.Count). _
   End(xlUp).Address).Select

Cuando este código se usa con la tabla de ejemplo, seleccionará las celdas A1 a A6.

Cómo seleccionar un rango rectangular de celdas

Para seleccionar un rango rectangular de celdas alrededor de una celda, use el método CurrentRegion. El rango seleccionado por el método CurrentRegion es un área delimitada por cualquier combinación de filas en blanco y columnas en blanco. A continuación se muestra un ejemplo de cómo usar el método CurrentRegion:

ActiveSheet.Range("a1").CurrentRegion.Select

Este código seleccionará las celdas A1 a C4. A continuación se enumeran otros ejemplos para seleccionar el mismo rango de celdas:

ActiveSheet.Range("a1", _
   ActiveSheet.Range("a1").End(xlDown).End(xlToRight)).Select
   -or-
ActiveSheet.Range("a1:" & _
   ActiveSheet.Range("a1").End(xlDown).End(xlToRight).Address).Select

En algunos casos, es posible que desee seleccionar las celdas A1 a C6. En este ejemplo, el método CurrentRegion no funcionará debido a la línea en blanco de la fila 5. En los ejemplos siguientes se seleccionarán todas las celdas:

lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, lastCol).End(xlUp).Row
ActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select
    -or-
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, lastCol).End(xlUp).Row
ActiveSheet.Range("a1:" & _
   ActiveSheet.Cells(lastRow, lastCol).Address).Select

Cómo seleccionar varias columnas no contiguas de longitud variable

Para seleccionar varias columnas no contiguas de longitud variable, use el ejemplo de tabla y macro de ejemplo siguiente:

A1: 1  B1: 1  C1: 1  D1: 1
A2: 2  B2: 2  C2: 2  D2: 2
A3: 3  B3: 3  C3: 3  D3: 3
A4:    B4: 4  C4: 4  D4: 4
A5:    B5: 5  C5: 5  D5:
A6:    B6:    C6: 6  D6:
StartRange = "A1"
EndRange = "C1"
Set a = Range(StartRange, Range(StartRange).End(xlDown))
Set b = Range(EndRange, Range(EndRange).End(xlDown))
Union(a,b).Select

Cuando se usa este código con la tabla de ejemplo, se seleccionarán las celdas A1:A3 y C1:C6.

Notas sobre los ejemplos

La propiedad ActiveSheet normalmente se puede omitir, ya que está implícita si no se denomina una hoja específica. Por ejemplo, en lugar de

ActiveSheet.Range("D5").Select

puede usar:

Range("D5").Select

La propiedad ActiveWorkbook también se puede omitir normalmente. A menos que se llame a un libro específico, el libro activo está implícito.

Cuando se usa el método Application.Goto, si desea usar dos métodos Cells dentro del método Range cuando el rango especificado está en otra hoja de cálculo (no en la activa), debe incluir el objeto Sheets cada vez. Por ejemplo:

    With ActiveWorkbook.Sheets("Sheet1")
        Application.Goto .Range(.Cells(2, 3), .Cells(4, 5))
    End With

Para cualquier elemento entre comillas (por ejemplo, el intervalo con nombre "Test"), también puede usar una variable cuyo valor sea una cadena de texto. Por ejemplo, en lugar de

ActiveWorkbook.Sheets("Sheet1").Activate

puede usar

ActiveWorkbook.Sheets(myVar).Activate

donde el valor de myVar es "Sheet1".