Cómo seleccionar celdas o rangos mediante los 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 procedimiento en particular, pero no modificarán estos ejemplos para proporcionar una funcionalidad agregada ni crear procedimientos que se ajusten a sus necesidades específicas. Los ejemplos de este artículo usan los métodos de Visual Basic que se enumeran 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 de la hoja de cálculo activa, puede usar uno de los siguientes ejemplos:
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 uno de los siguientes ejemplos:
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 de 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 de la hoja de cálculo activa, puede usar cualquiera de los siguientes ejemplos:
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 uno 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 intervalo:
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 de 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 intervalo:
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 "prueba" de la hoja de cálculo activa, puede usar cualquiera de los siguientes ejemplos:
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 "prueba" en otra hoja de cálculo del mismo libro, puede usar el siguiente ejemplo:
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 de un libro diferente
Para seleccionar el rango con nombre "prueba" en una hoja de cálculo de un libro diferente, puede usar el siguiente ejemplo:
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 que está cinco filas más abajo y cuatro columnas a la izquierda de la celda activa, puede usar el siguiente ejemplo:
ActiveCell.Offset(5, -4).Select
Para seleccionar una celda que está dos filas por encima y tres columnas a la derecha de la celda activa, puede usar el siguiente ejemplo:
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 anterior devolverá un error si la celda activa está en las columnas A a D, ya que mover cuatro columnas a la izquierda, tomaría la celda activa en una dirección de celda no válida.
Cómo seleccionar una celda relativa a otra celda (no la activa)
Para seleccionar una celda que se encuentra cinco filas más abajo y cuatro columnas a la derecha de la celda C7, puede usar cualquiera de los siguientes ejemplos:
ActiveSheet.Cells(7, 3).Offset(5, 4).Select
ActiveSheet.Range("C7").Offset(5, 4).Select
Cómo seleccionar un rango de celdas que se desplaza desde un rango especificado
Para seleccionar un rango de celdas que tenga el mismo tamaño que el rango con nombre "prueba" pero que se desplace cuatro filas hacia abajo y tres columnas a la derecha, puede usar el siguiente ejemplo:
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 siguiente ejemplo:
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 rango con nombre "base de datos" y, a continuación, extender la selección cinco filas, puede usar el siguiente ejemplo:
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 rango cuatro filas a continuación y tres columnas a la derecha del rango con nombre "base de datos" e incluir dos filas y una columna más que el rango con nombre, puede usar el ejemplo siguiente:
Range("Database").Select
Selection.Offset(4, 3).Resize(Selection.Rows.Count + 2, _
Selection.Columns.Count + 1).Select
Cómo seleccionar la Unión de dos o más rangos especificados
Para seleccionar la Unión (es decir, el área combinada) de los dos rangos con nombre "prueba" y "ejemplo", puede usar el siguiente ejemplo:
Application.Union(Range("Test"), Range("Sample")).Select
Nota
para que este ejemplo funcione, ambos intervalos deben estar en la misma hoja de cálculo. Tenga en cuenta también que el método Union no funciona en las distintas hojas. Por ejemplo, esta línea funciona correctamente.
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 de unión de la clase Application
Cómo seleccionar la intersección de dos o más rangos especificados
Para seleccionar la intersección de los dos rangos con nombre "prueba" y "ejemplo", puede usar el siguiente ejemplo:
Application.Intersect(Range("Test"), Range("Sample")).Select
Tenga en cuenta que ambos intervalos deben estar en la misma hoja de cálculo para que este ejemplo funcione.
Los ejemplos 17-21 de este artículo hacen referencia al siguiente conjunto de datos de muestra. En cada ejemplo se indica el rango de celdas en 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 siguiente ejemplo:
ActiveSheet.Range("a1").End(xlDown).Select
Cuando se utiliza este código con la tabla de ejemplo, se selecciona la celda A4.
Cómo seleccionar la celda en blanco en la parte inferior de una columna de datos contiguos
Para seleccionar la celda situada debajo de un rango de celdas contiguas, use el siguiente ejemplo:
ActiveSheet.Range("a1").End(xlDown).Offset(1,0).Select
Cuando se usa este código con la tabla de ejemplo, se selecciona 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 siguientes ejemplos:
ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select
-or-
ActiveSheet.Range("a1:" & ActiveSheet.Range("a1"). _
End(xlDown).Address).Select
Cuando se utiliza este código con la tabla de ejemplo, se seleccionan las celdas a1 a A4.
Cómo seleccionar un rango completo de celdas no contiguas en una columna
Para seleccionar un rango de celdas que no son contiguas, use uno de los siguientes ejemplos:
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 se usa este código con la tabla de ejemplo, se seleccionan las celdas a1 a A6.
Cómo seleccionar un rango de celdas rectangular
Para seleccionar un rango de celdas rectangular 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 y columnas en blanco. El siguiente es 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 seleccionan 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
Seleccionar varias columnas no contiguas de longitud variable
Para seleccionar varias columnas no contiguas de longitud variable, use la tabla de ejemplo y el ejemplo de macro siguientes:
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 seleccionan las celdas a1: a3 y C1: C6.
Notas sobre los ejemplos
Normalmente, la propiedad ActiveSheet puede omitirse, porque está implícita si no se asigna un nombre a 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 haya asignado un nombre a un libro específico, el libro activo es implícito.
Cuando use 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 rango con nombre "prueba"), 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".