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".