cómo seleccionar celdas y rangos mediante procedimientos de visual basic
TRANSCRIPT
Cómo seleccionar celdas y rangos mediante procedimientos de Visual BasicVer los productos a los que se aplica este artículoEste artículo se publicó anteriormente con el número E291308
En esta página
Más informacióno 1: seleccionar una celda en la hoja de
cálculo activao 2: seleccionar una celda en otra hoja de
cálculo del mismo libroo 3: seleccionar una celda en una hoja de
cálculo de un libro diferenteo 4: seleccionar un rango de celdas en la
hoja de cálculo activao 5: seleccionar un rango de celdas en otra
hoja de cálculo del mismo libroo 6: seleccionar un rango de celdas en una
hoja de cálculo de un libro diferenteo 7: seleccionar un rango con nombre en la
hoja de cálculo activao 8: seleccionar un rango con nombre en
otra hoja de cálculo del mismo libroo 9: seleccionar un rango con nombre en
una hoja de cálculo de un libro diferenteo 10: seleccionar una celda relativa a la
celda activao 11: seleccionar una celda relativa a otra
celda (distinta de la activa)o 12: seleccionar un rango de celdas
separadas por un rango específicoo 13: seleccionar un rango especificado y
cambiar el tamaño de la seleccióno 14: seleccionar un rango especificado,
desplazarlo y cambiar su tamañoo 15: Seleccionar la unión de dos o más
rangos especificadoso 16: seleccionar la intersección de dos o
más rangos especificadoso 17: seleccionar la última celda de una
columna de datos contiguoso 18: seleccionar la celda en blanco en la
parte inferior de una columna de datos contiguos
o 19: seleccionar un rango completo de celdas contiguas en una columna
o 20: seleccionar un rango completo de celdas que no sean contiguas en una columna
o 21: seleccionar un rango rectangular de celdas
o 22. Seleccionar varias columnas no contiguas de longitud variable
o NOTAS SOBRE LOS EJEMPLOS
Más información
Microsoft proporciona ejemplos de programación sólo como ilustración, sin ningun...
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. Contraer esta tablaAmpliar esta tabla
Método ArgumentosActivate ningunoCells rowIndex, columnIndexApplication.Goto reference, scrollOffset rowOffset, columnOffset
Rangecell1cell1, cell2
Resize rowSize, columnSizeSelect ningunoSheets index (o sheetName)Workbooks index (o bookName)End directionCurrentRegion ningunoEn los ejemplos de este artículo se usan las propiedades de tabla siguiente. Contraer esta tablaAmpliar esta tabla
PropiedadUso
ActiveSheet especificar la hoja activaActiveWorkbook especificar el libro activoColumns.Count contar el número de columnas en el elemento especificadoRows.Count contar el número de filas en el elemento especificado
Selection referirse al rango seleccionado en este momentoVolver al principio
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
Volver al principio
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 anterior para seleccionar la celda: Sheets("Sheet2").ActivateActiveSheet.Cells(6, 5).Select
Volver al principio
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 anterior para seleccionar la celda: Workbooks("BOOK2.XLS").Sheets("Sheet1").ActivateActiveSheet.Cells(7, 6).Select
Volver al principio
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
Volver al principio
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 anterior para seleccionar el rango: Sheets("Sheet3").ActivateActiveSheet.Range(Cells(3, 4), Cells(11, 5)).Select
Volver al principio
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 anterior para seleccionar el rango: Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate ActiveSheet.Range(Cells(4, 5), Cells(12, 6)).Select
Volver al principio
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"
Volver al principio
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 anterior para seleccionar el rango con nombre: Sheets("Sheet1").ActivateRange("Test").Select
Volver al principio
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 anterior para seleccionar el rango con nombre: Workbooks("BOOK2.XLS").Sheets("Sheet2").ActivateRange("Test").Select
Volver al principio
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.
Volver al principio
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
Volver al principio
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").ActivateActiveSheet.Range("Test").Offset(4, 3).Select
Volver al principio
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").SelectSelection.Resize(Selection.Rows.Count + 5, _ Selection.Columns.Count).Select
Volver al principio
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").SelectSelection.Offset(4, 3).Resize(Selection.Rows.Count + 2, _ Selection.Columns.Count + 1).Select
Volver al principio
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
Volver al principio
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
Volver al principio
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.
Volver al principio
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
Volver al principio
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.
Volver al principio
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.
Volver al principio
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 muestran otros ejemplos para seleccionar el mismo rango de celdas: 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, puede que prefiera 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).ColumnlastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).RowActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select
O bien
lastCol = ActiveSheet.Range("a1").End(xlToRight).ColumnlastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).RowActiveSheet.Range("a1:" & _
ActiveSheet.Cells(lastRow, lastCol).Address).Select
Volver al principio
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.
Volver al principio
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, si desea utilizar dos métodos Cells dentro del método Range cuando el rango especificado esté en otra hoja (no en la activa), debe 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".