Estás trabajando sin conexión, espera a que vuelva la conexión a Internet

Cómo seleccionar celdas y rangos mediante procedimientos de Visual Basic

Ha finalizado el soporte técnico para Office 2003

Microsoft puso fin al soporte técnico para Office 2003 el 8 de abril de 2014. Este cambio ha afectado a las actualizaciones de software y las opciones de seguridad. Sepa qué significa esto en su caso y cómo puede mantenerse protegido.

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           ninguno   Cells              rowIndex, columnIndex   Application.Goto   reference, scroll   Offset             rowOffset, columnOffset   Range              cell1                      cell1, cell2   Resize             rowSize, columnSize   Select             ninguno   Sheets             index (o sheetName)   Workbooks          index (o bookName)   End                direction   CurrentRegion      ninguno				En los ejemplos de este artículo se usan las propiedades de tabla siguiente. <Formatting Type="FixedText"><![CDATA[   Propiedad         Uso   ---------------------------------------------------------------------   ActiveSheet      especificar la hoja activa   ActiveWorkbook  especificar el libro activo   Columns.Count    contar el número de columnas en el elemento especificado   Rows.Count      contar el número de filas en el elemento especificado   Selection        referirse al rango seleccionado en este momento				

1. Cómo seleccionar una celda en la hoja activa

Para seleccionar la celda D5 en la hoja activa, puede utilizar cualquiera de los ejemplos siguientes:
ActiveSheet.Cells(5, 4).Select				
-o bien-
ActiveSheet.Range("D5").Select				

2. Cómo seleccionar una celda en otra hoja del mismo libro

Para seleccionar la celda E6 en otra hoja 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				

3. Cómo seleccionar una celda en una hoja de un libro diferente

Para seleccionar la celda F7 en una hoja 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 de cálculo y, a continuación, usar el método 1 anterior para seleccionar la celda:
Workbooks("BOOK2.XLS").Sheets("Sheet1").ActivateActiveSheet.Cells(7, 6).Select				

4. Cómo seleccionar un rango de celdas en la hoja activa

Para seleccionar el rango C2:D10 en la hoja 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. Cómo seleccionar un rango de celdas en otra hoja del mismo libro

Para seleccionar el rango D3:E11 en otra hoja 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				

6. Cómo seleccionar un rango de celdas en una hoja de un libro diferente

Para seleccionar el rango E4:F12 en una hoja de otro libro, 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				

7. Cómo seleccionar un rango con nombre en la hoja activa

Para seleccionar el rango con nombre "Test" de la hoja activa, puede utilizar cualquiera de los ejemplos siguientes:
Range("Test").Select				
Application.Goto "Test"				

8. Cómo seleccionar un rango con nombre en otra hoja del mismo libro

Para seleccionar el rango con nombre "Test" en otra hoja del mismo libro, puede utilizar el ejemplo siguiente:
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				

9. Cómo seleccionar un rango con nombre en una hoja de un libro diferente

Para seleccionar el rango con nombre "Test" en una hoja de otro libro, puede utilizar el ejemplo siguiente:
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				

10. Cómo 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 de cálculo". El primer ejemplo anterior devolverá un error si la celda activa se encuentra entre en las columnas A y 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. Cómo seleccionar una celda relativa a otra celda (que no sea la celda activa)

Para seleccionar una celda que se encuentra cinco filas más abajo y cuatro columnas a la derecha de la celda C7, puede utilizar cualquiera de los ejemplos siguientes:
ActiveSheet.Cells(7, 3).Offset(5, 4).Select				
ActiveSheet.Range("C7").Offset(5, 4).Select				

12. Cómo 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 "Test" 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				

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

Para seleccionar el rango con nombre "Database" 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				

14. Cómo 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 "Database" 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				

15. 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 "Test" y "Sample", 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. Cómo seleccionar la intersección de dos o más rangos especificados

Para seleccionar la intersección de los dos rangos con nombre "Test" y "Sample", 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. Cómo 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. 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, 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. Cómo 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. Cómo seleccionar un rango completo de celdas que no sean contiguas en una columna

Para seleccionar un rango de celdas que no sean contiguas en una columna, 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. Cómo 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 entre A1 y C4. Otros ejemplos para seleccionar el mismo rango de celdas son los siguientes:
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 desee seleccionar las celdas entre A1 y C6. En este ejemplo, el método CurrentRegion no funcionará porque hay una línea en blanco en la fila 5. Los ejemplos siguientes 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				

22. Cómo 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, 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".
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
OfficeKBHowTo howto contiguous how to discontiguous non-contiguous nonadjacent non-adjacent  XL2003 XL2007 XL2010
Propiedades

Id. de artículo: 291308 - Última revisión: 01/31/2014 22:26:00 - Revisión: 3.0

  • Microsoft Office Excel 2003
  • Microsoft Office Excel 2007
  • Microsoft Excel 2010
  • kbautomation kbmacro kbdtacode kbhowto kbprogramming KB291308
Comentarios