Está en la página 1de 14

Cómo seleccionar celdas y rangos

mediante procedimientos de Visual Basic


 Correo electrónico
 Imprimir

Más información
Microsoft proporciona ejemplos de programación sólo como ilustración, 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. En este artículo se da por
supuesto que ya conoce el lenguaje de programación que se muestra, así como las
herramientas empleadas 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 que se enumeran en la tabla
siguiente.

Método Argumentos
------------------------------------------
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 tabla siguiente.


Propiedad Uso

---------------------------------------------------------------------
ActiveSheet para especificar la hoja activa ActiveWorkbook
para especificar el libro activo Columns.Count para contar el
número de columnas del elemento especificado Rows.Count para
contar el número de filas del elemento especificado Selection
para hacer referencia al rango seleccionado

1: Seleccionar una celda en la hoja de cálculo activa

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

ActiveSheet.Cells(5, 4).Select

o bien

ActiveSheet.Range("D5").Select

2: Seleccionar una celda en otra hoja de cálculo del mismo libro

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

Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(6, 5)

o bien
Application.Goto (ActiveWorkbook.Sheets("Sheet2").Range("E6"))

O bien, puede activar la hoja y usar el método 1 que aparece más arriba para
seleccionar la celda:

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

3: 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 utilizar
cualquiera de los ejemplos siguientes:

Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Cells(7, 6)

o bien

Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("F7")

O bien, puede activar la hoja y usar el método 1 que aparece más arriba para
seleccionar la celda:

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

4: 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 utilizar cualquiera
de los ejemplos siguientes:
ActiveSheet.Range(Cells(2, 3), Cells(10, 4)).Select

ActiveSheet.Range("C2:D10").Select

ActiveSheet.Range("C2", "D10").Select

5: Seleccionar un rango de celdas en otra hoja de cálculo del mismo libro

Para seleccionar el rango D3:E11 de otra hoja de cálculo del mismo libro, puede utilizar
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 y usar el método 4 que aparece más arriba para
seleccionar el rango:

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

6: Seleccionar un rango de celdas en una hoja de cálculo de un libro


diferente

Para seleccionar el rango E4:F12 de una hoja de cálculo en un libro diferente, puede
utilizar 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 y usar el método 4 que aparece más arriba para
seleccionar el rango:

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

7: Seleccionar un rango con nombre en la hoja de cálculo activa

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

Range("Test").Select

Application.Goto "Test"

8: Seleccionar un rango con nombre en otra hoja de cálculo del mismo


libro

Para seleccionar el rango con nombre "Test" de otra hoja de cálculo del mismo libro,
puede utilizar cualquiera de los ejemplos siguientes:

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

O bien, puede activar la hoja y usar el método 7 que aparece más arriba para
seleccionar el rango con nombre:

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

9: Seleccionar un rango con nombre en una hoja de cálculo de un libro


diferente
Para seleccionar el rango con nombre "Test" de una hoja de cálculo de un libro
diferente, puede utilizar cualquiera de los ejemplos siguientes:

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

O bien, puede activar la hoja y usar el método 7 que aparece más arriba para
seleccionar el rango con nombre:

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

10: Seleccionar una celda relativa a la celda activa

Para seleccionar una celda que se encuentra cinco filas más abajo y cuatro columnas a
la izquierda de la celda activa, puede utilizar el ejemplo siguiente:

ActiveCell.Offset(5, -4).Select

Para seleccionar una celda que se encuentra dos filas más arriba y tres columnas a la
derecha de la celda activa, puede utilizar el ejemplo siguiente:

ActiveCell.Offset(-2, 3).Select

Nota: Se producirá un error si intenta seleccionar una celda que esté "fuera de la hoja".
El primer ejemplo anterior devolverá un error si la celda activa se encuentra entre en
las columnas A a D, ya que si se mueve cuatro columnas a la izquierda, la celda activa
se desplazaría a una dirección de celda no válida. 

11: Seleccionar una celda relativa a otra celda (distinta de la activa)


Para seleccionar una celda que se encuentra cinco filas más abajo y cuatro columnas a
la izquierda de la celda C7, puede utilizar los ejemplos siguientes:

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

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

12: Seleccionar un rango de celdas separadas por un rango específico

Para seleccionar un rango de celdas que sea del mismo tamaño que el rango con
nombre "Prueba" pero que estén desplazadas cuatro filas más abajo y tres columnas a
la derecha, puede utilizar el ejemplo siguiente:

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

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

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

13: 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 utilizar el ejemplo siguiente:

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

14: Seleccionar un rango especificado, desplazarlo y cambiar su tamaño


Para seleccionar un rango cuatro filas más abajo 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 utilizar el ejemplo siguiente:

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

15: 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 utilizar el ejemplo siguiente:

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

Tenga en cuenta que ambos rangos deben estar en la misma hoja para que este
ejemplo funcione. Observe también que el método Union no funciona entre diferentes
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 la clase de aplicación del método Union

16: 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 utilizar el ejemplo siguiente:
Application.Intersect(Range("Test"), Range("Sample")).Select

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

Los ejemplos 17 a 21 de este artículo hacen referencia al siguiente conjunto de datos


de ejemplo. En cada ejemplo se especifica el rango de celdas de los datos del ejemplo
que se seleccionarían.

A1: Nombre B1: Ventas C1: Cantidad


A2: a B2: $10 C2: 5
A3: b B3: C3: 10
A4: c B4: $10 C4: 5
A5: B5: C5:
R6: Total B6: $20 C6: 20

17: Seleccionar la última celda de una columna de datos contiguos

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

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

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

18: 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, utilice el ejemplo
siguiente:

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

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

19: Seleccionar un rango completo de celdas contiguas en una columna

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

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

o bien

ActiveSheet.Range("a1:" & ActiveSheet.Range("a1"). _


End(xlDown).Address).Select

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

20: Seleccionar un rango completo de celdas que no sean contiguas en


una columna

Para seleccionar un rango de celdas que no sean contiguas, utilice uno de los ejemplos
siguientes:
ActiveSheet.Range("a1",ActiveSheet.Range("a65536").End(xlUp)).Select

o bien

ActiveSheet.Range("a1:" & ActiveSheet.Range("a65536"). _


End(xlUp).Address).Select

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

21: Seleccionar un rango rectangular de celdas

Para seleccionar un rango de celdas rectangular alrededor de una celda, utilice el


método CurrentRegion. El rango seleccionado mediante el método CurrentRegion es
un área limitada por cualquier combinación de filas en blanco y columnas vacías. A
continuación se muestra un ejemplo de cómo utilizar el método CurrentRegion:

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

Este código seleccionará las celdas A1 a C4. A continuación se enumeran más ejemplos
de selección de celdas del mismo rango:

ActiveSheet.Range("a1", _
ActiveSheet.Range("a1").End(xlDown).End(xlToRight)).Select

o bien

ActiveSheet.Range("a1:" & _
ActiveSheet.Range("a1").End(xlDown).End(xlToRight).Address).Select
En algunos casos, es posible que quiera seleccionar las celdas A1 a C6. En este ejemplo,
el método CurrentRegion no funcionará por la línea vacía de la fila 5. Los siguientes
ejemplos harán que se seleccionen todas las celdas:

lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row
ActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select

o bien

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

22: Seleccionar varias columnas no contiguas de longitud variable

Para seleccionar varias columnas no contiguas de longitud variable, utilice la tabla de


ejemplo siguiente y el ejemplo de macro:

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:
R6: 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 este código se utilice con la tabla de ejemplo, se seleccionarán las celdas
A1:A3 y C1:C6.
NOTAS SOBRE LOS EJEMPLOS

 Normalmente se puede omitir la propiedad ActiveSheet, ya que se considera


implícita si una hoja concreta no tiene nombre. Por ejemplo, en lugar de
escribir

ActiveSheet.Range("D5").Select

puede utilizar:

Range("D5").Select

 Generalmente también se puede omitir la propiedad ActiveWorkbook. A


menos que se nombre un libro concreto, el libro activo se considera implícito.
 Cuando use el método Application.Goto y desee utilizar dos
métodos Cells dentro del método Range cuando el rango especificado esté en
otra hoja (no en la activa), deberá incluir el objeto Sheets cada vez. Por
ejemplo:

Application.Goto Sheets("Sheet1").Range( _
Sheets("Sheet1").Range(Sheets("Sheet1").Cells(2, 3), _
Sheets("Sheet1").Cells(4, 5)))

 Para cualquier elemento entre comillas (por ejemplo, el rango con nombre
"Prueba"), también puede utilizar una variable cuyo valor sea una cadena de
texto. Por ejemplo, en lugar de escribir

ActiveWorkbook.Sheets("Sheet1").Activate

puede utilizar
ActiveWorkbook.Sheets(myVar).Activate

donde el valor de myVar es "Sheet1".

Referencias

Para obtener más información acerca de cómo usar el código de ejemplo de este
artículo, haga clic en el número de artículo siguiente para verlo en Microsoft
Knowledge Base:

290140 Cómo ejecutar el código de ejemplo de los programas de Office XP incluido en


los artículos de Knowledge Base

Propiedades
Id. de artículo: 291308 - Última revisión: 15/12/2016 - Revisión: 1

También podría gustarte