Objeto Range (Excel)Range object (Excel)

Representa una celda, una fila, una columna, una selección de celdas que contienen uno o más bloques de celdas contiguos o un rango 3D.Represents a cell, a row, a column, a selection of cells containing one or more contiguous blocks of cells, or a 3D range.

Note

¿Le interesa el desarrollo de soluciones que amplían la experiencia de Office en varias plataformas?Interested in developing solutions that extend the Office experience across multiple platforms? Vea el nuevo modelo de complementos de Office.Check out the new Office Add-ins model. Los complementos de Office tienen una pequeña superficie en comparación con los complementos y las soluciones de VSTO y puede compilarlos con casi cualquier tecnología de programación web, como HTML5, JavaScript, CSS3 y XML.Office Add-ins have a small footprint compared to VSTO Add-ins and solutions, and you can build them by using almost any web programming technology, such as HTML5, JavaScript, CSS3, and XML.

ComentariosRemarks

El miembro predeterminado de Range reenvía las llamadas que no tienen parámetros a la propiedad Value y llama con parámetros al Item miembro.The default member of Range forwards calls without parameters to the Value property and calls with parameters to the Item member. Por lo tanto, someRange = someOtherRange equivale a someRange.Value = someOtherRange.Value, someRange(1) a someRange.Item(1) y someRange(1,1) a someRange.Item(1,1).Accordingly, someRange = someOtherRange is equivalent to someRange.Value = someOtherRange.Value, someRange(1) to someRange.Item(1) and someRange(1,1) to someRange.Item(1,1).

En la sección de ejemplos se describen los métodos y las propiedades siguientes para devolver un objeto Range:The following properties and methods for returning a Range object are described in the Example section:

  • Propiedades Range y Cells del objeto WorksheetRange and Cells properties of the Worksheet object
  • Propiedades Range y Cells del objeto RangeRange and Cells properties of the Range object
  • Las propiedades Rows y Columns del objeto de WorksheetRange and Cells properties of the Worksheet object
  • Las propiedades Rows y Columns del objeto RangeRange and Cells properties of the Range object
  • Propiedad Offset del objeto RangeOffset property of the Range object
  • Método Union del objeto ApplicationUnion method of the Application object

EjemploExample

Use Range (arg), donde arg denomina el rango, para devolver un objeto Range que represente una sola celda o un rango de celdas.Use Range (arg), where arg names the range, to return a Range object that represents a single cell or a range of cells. En el ejemplo siguiente se coloca el valor de la celda A1 en la celda A5.The following example places the value of cell A1 in cell A5.

Worksheets("Sheet1").Range("A5").Value = _ 
    Worksheets("Sheet1").Range("A1").Value

En el ejemplo siguiente se rellena el rango a1: H8 con números aleatorios estableciendo la fórmula de cada celda del rango.The following example fills the range A1:H8 with random numbers by setting the formula for each cell in the range. Si se utiliza sin calificador de objeto (un objeto a la izquierda del punto), la propiedad Range devuelve un rango de la hoja activa.When it's used without an object qualifier (an object to the left of the period), the Range property returns a range on the active sheet. Si la hoja activa no es una hoja de cálculo, el método produce un error.If the active sheet isn't a worksheet, the method fails.

Use el método Activate del objeto Worksheet para activar una hoja de cálculo antes de usar la propiedad Range sin un calificador de objeto explícito.Use the Activate method of the Worksheet object to activate a worksheet before you use the Range property without an explicit object qualifier.

Worksheets("Sheet1").Activate 
Range("A1:H8").Formula = "=Rand()"    'Range is on the active sheet

En el ejemplo siguiente se borra el contenido del rango denominado Criteria.The following example clears the contents of the range named Criteria.

Note

Si usa un argumento de texto para la dirección del rango, debe especificar la dirección en la notación de estilo A1 (no se puede usar la notación de estilo R1C1).If you use a text argument for the range address, you must specify the address in A1-style notation (you cannot use R1C1-style notation).

Worksheets(1).Range("Criteria").ClearContents

Use Cells en una hoja de cálculo para obtener un rango formado por todas las celdas individuales de la hoja de cálculo.Use Cells on a worksheet to obtain a range consisting all single cells on the worksheet. Puede tener acceso a celdas individuales con Item(fila, columna), donde fila es el índice de la fila y columna es el índice de la columna.You can access single cells via Item(row, column), where row is the row index and column is the column index. Se puede omitir Item ya que el miembro predeterminado de Range reenvía la llamada.Item can be omitted since the call is forwarded to it by the default member of Range. El ejemplo siguiente define el valor de la celda A1 como 24 y el de la celda B1 como 42 en la primera hoja del libro activo.The following example sets the value of cell A1 to 24 and of cell B1 to 42 on the first sheet of the active workbook.

Worksheets(1).Cells(1, 1).Value = 24
Worksheets(1).Cells.Item(1, 2).Value = 42

En el ejemplo siguiente se establece la fórmula para la celda A2.The following example sets the formula for cell A2.

ActiveSheet.Cells(2, 1).Formula = "=Sum(B1:B5)"

Aunque también puede usar Range("A1") para devolver la celda A1, a veces la propiedad Cells es más práctica, ya que puede usar una variable para la fila o columna.Although you can also use Range("A1") to return cell A1, there may be times when the Cells property is more convenient because you can use a variable for the row or column. En el ejemplo siguiente se crean encabezados de fila y columna en la Hoja1.The following example creates column and row headings on Sheet1. Tenga en cuenta que, después de activar la hoja de cálculo, la propiedad Cells puede usarse sin una declaración explícita de hoja (devuelve una celda de la hoja activa).Be aware that after the worksheet has been activated, the Cells property can be used without an explicit sheet declaration (it returns a cell on the active sheet).

Note

Aunque se pueden usar funciones de cadena de Visual Basic para modificar las referencias de estilo A1, es más fácil (y una mejor práctica de programación) usar la notación Cells(1, 1).Although you could use Visual Basic string functions to alter A1-style references, it is easier (and better programming practice) to use the Cells(1, 1) notation.

Sub SetUpTable() 
Worksheets("Sheet1").Activate 
For TheYear = 1 To 5 
    Cells(1, TheYear + 1).Value = 1990 + TheYear 
Next TheYear 
For TheQuarter = 1 To 4 
    Cells(TheQuarter + 1, 1).Value = "Q" & TheQuarter 
Next TheQuarter 
End Sub

Para obtener un rango con la misma dirección formada por celdas individuales, use expresión.Cells, donde expresión es una expresión que devuelve un objeto Range.Use_expression_.Cells, where expression is an expression that returns a Range object, to obtain a range with the same address consisting of single cells. En este rango, puede acceder a celdas individuales a través de Elemento (fila, columna), donde se relacionan con la esquina superior izquierda de la primera área del rango.On such a range, you access single cells via Item(row, column), where are relative to the upper-left corner of the first area of the range. Se puede omitir Item ya que el miembro predeterminado de Range reenvía la llamada.Item can be omitted since the call is forwarded to it by the default member of Range. En el siguiente ejemplo se establece la fórmula de la celda C5 y D5 de la primera hoja del libro activo.The following example sets the formula for cell C5 and D5 of the first sheet of the active workbook.

Worksheets(1).Range("C5:C10").Cells(1, 1).Formula = "=Rand()"
Worksheets(1).Range("C5:C10").Cells.Item(1, 2).Formula = "=Rand()"

Use Range (cell1, cell2), donde cell1 y cell2 son objetos Range que especifican las celdas de inicio y fin, para devolver un objeto Range.Use Range (cell1, cell2), where cell1 and cell2 are Range objects that specify the start and end cells, to return a Range object. En el ejemplo siguiente se establece el estilo de línea de borde para las celdas A1:J10.The following example sets the border line style for cells A1:J10.

Note

Tenga en cuenta que el punto delante de cada repetición de la propiedad Cells es necesario si el resultado de la instrucción anterior With es que se aplicará a la propiedad Cells.Be aware that the period in front of each occurrence of the Cells property is required if the result of the preceding With statement is to be applied to the Cells property. En este caso, indica que las celdas están en una hoja de cálculo (sin el punto, la propiedad Cells devolvería las celdas de la hoja activa).In this case, it indicates that the cells are on worksheet one (without the period, the Cells property would return cells on the active sheet).

With Worksheets(1) 
    .Range(.Cells(1, 1), _ 
        .Cells(10, 10)).Borders.LineStyle = xlThick 
End With

Use Rows en una hoja de cálculo para obtener un rango formado por todas las filas de la hoja de cálculo.Use Rows on a worksheet to obtain a range consisting all rows on the worksheet. Puede acceder a las filas individuales a través de Item(fila), donde fila es el índice de fila.You can access single rows via Item(row), where row is the row index. Se puede omitir Item ya que el miembro predeterminado de Range reenvía la llamada.Item can be omitted since the call is forwarded to it by the default member of Range.

Note

Si los rangos constan solo de filas, no se permite introducir un segundo parámetro en Item.It is not legal to provide the second parameter of Item for ranges consisting of rows. Primero, debe hacer una conversión a celdas individuales usando Cells.You first have to convert it to single cells via Cells.

En el ejemplo siguiente se eliminan las filas 4 y 10 de la primera hoja del libro activo.The following example deletes row 4 and 10 of the first sheet of the active workbook.

Worksheets(1).Rows(10).Delete
Worksheets(1).Rows.Item(5).Delete

Use Columns en una hoja de cálculo para obtener un rango formado por todas las columnas de la hoja de cálculo.Use Columns on a worksheet to obtain a range consisting all columns on the worksheet. Puede obtener acceso a las columnas únicas con Item(fila), donde fila es el índice de la columna, especificado como un número o una dirección de columna de estilo A1.You can access single columns via Item(row) [sic], where row is the column index given as a number or as an A1-style column address. Se puede omitir Item ya que el miembro predeterminado de Range reenvía la llamada.Item can be omitted since the call is forwarded to it by the default member of Range.

Note

Si los rangos constan solo de columnas, no se permite introducir un segundo parámetro en Item.It is not legal to provide the second parameter of Item for ranges consisting of columns. Primero, debe hacer una conversión a celdas individuales usando Cells.You first have to convert it to single cells via Cells.

En el ejemplo siguiente se eliminan las columnas «B», «C», «E» y «J» de la primera hoja del libro activo.The following example deletes column "B", "C", "E", and "J" of the first sheet of the active workbook.

Worksheets(1).Columns(10).Delete
Worksheets(1).Columns.Item(5).Delete
Worksheets(1).Columns("C").Delete
Worksheets(1).Columns.Item("B").Delete

Use_expresión_.Rows, donde expresión es una expresión que devuelve un objeto Range, para obtener un rango formado por las filas de la primera área del rango.Use_expression_.Rows, where expression is an expression that returns a Range object, to obtain a range consisting of the rows in the first area of the range. Puede obtener acceso a las filas individuales a través de Item(fila), donde fila es el índice de fila relativo desde la parte superior de la primera área del rango.You can access single rows via Item(row), where row is the relative row index from the top of the first area of the range. Se puede omitir Item ya que el miembro predeterminado de Range reenvía la llamada.Item can be omitted since the call is forwarded to it by the default member of Range.

Note

Si los rangos constan solo de filas, no se permite introducir un segundo parámetro en Item.It is not legal to provide the second parameter of Item for ranges consisting of rows. Primero, debe hacer una conversión a celdas individuales usando Cells.You first have to convert it to single cells via Cells.

En el ejemplo siguiente se eliminan los rangos C8:D8 y C6:D6 de la primera hoja del libro activo.The following example deletes the ranges C8:D8 and C6:D6 of the first sheet of the active workbook.

Worksheets(1).Range("C5:D10").Rows(4).Delete
Worksheets(1).Range("C5:D10").Rows.Item(2).Delete

Use_expresión_.Columns, donde expresión es una expresión que devuelve un objeto Range, para obtener un rango formado por las columnas de la primera área del rango.Use_expression_.Columns, where expression is an expression that returns a Range object, to obtain a range consisting of the columns in the first area of the range. Puede obtener acceso a las columnas únicas con Item(fila) [sic], donde fila es el índice relativo de la columna, desde la izquierda de la primera área del rango, especificado como un número o una dirección de columna de estilo A1.You can access single columns via Item(row) [sic], where row is the relative column index from the left of the first area of the range given as a number or as an A1-style column address. Se puede omitir Item ya que el miembro predeterminado de Range reenvía la llamada.Item can be omitted since the call is forwarded to it by the default member of Range.

Note

Si los rangos constan solo de columnas, no se permite introducir un segundo parámetro en Item.It is not legal to provide the second parameter of Item for ranges consisting of columns. Primero, debe hacer una conversión a celdas individuales usando Cells.You first have to convert it to single cells via Cells.

En el ejemplo siguiente se eliminan los rangos L2:L10, G2:G10, F2:F10 y D2:D10 de la primera hoja del libro activo.The following example deletes the ranges L2:L10, G2:G10, F2:F10 and D2:D10 of the first sheet of the active workbook.

Worksheets(1).Range("C5:Z10").Columns(10).Delete
Worksheets(1).Range("C5:Z10").Columns.Item(5).Delete
Worksheets(1).Range("C5:Z10").Columns("D").Delete
Worksheets(1).Range("C5:Z10").Columns.Item("B").Delete

Use Offset (row, column), donde row y column son los desplazamientos de fila y columna, para devolver un rango en un desplazamiento especificado a otro rango.Use Offset (row, column), where row and column are the row and column offsets, to return a range at a specified offset to another range. En el ejemplo siguiente se selecciona la celda situada tres filas debajo y una columna a la derecha de la celda en la esquina superior izquierda de la selección actual.The following example selects the cell three rows down from and one column to the right of the cell in the upper-left corner of the current selection. No puede seleccionar una celda que no está en la hoja activa, por lo que debe activar primero la hoja de cálculo.You cannot select a cell that is not on the active sheet, so you must first activate the worksheet.

Worksheets("Sheet1").Activate 
  'Can't select unless the sheet is active 
Selection.Offset(3, 1).Range("A1").Select

Use Union (rango1, rango2, ...) para devolver rangos de varias áreas, es decir, rangos compuestos de dos o más bloques de celdas contiguos.Use Union (range1, range2, ...) to return multiple-area ranges—that is, ranges composed of two or more contiguous blocks of cells. En el siguiente ejemplo se crea un objeto definido como la unión de los rangos A1: B2 y C3: D4 y, después, selecciona el rango definido.The following example creates an object defined as the union of ranges A1:B2 and C3:D4, and then selects the defined range.

Dim r1 As Range, r2 As Range, myMultiAreaRange As Range 
Worksheets("sheet1").Activate 
Set r1 = Range("A1:B2") 
Set r2 = Range("C3:D4") 
Set myMultiAreaRange = Union(r1, r2) 
myMultiAreaRange.Select

Si trabaja con selecciones que contienen más de un área, la propiedad Areas resulta útil.If you work with selections that contain more than one area, the Areas property is useful. Divide una selección de varias áreas en objetos Range individuales y, después, devuelve los objetos como una colección.It divides a multiple-area selection into individual Range objects and then returns the objects as a collection. Puede usar la propiedad Count en la colección devuelta para comprobar una selección que contiene más de un área, como se muestra en el ejemplo siguiente.You can use the Count property on the returned collection to verify a selection that contains more than one area, as shown in the following example.

Sub NoMultiAreaSelection() 
    NumberOfSelectedAreas = Selection.Areas.Count 
    If NumberOfSelectedAreas > 1 Then 
        MsgBox "You cannot carry out this command " & _ 
            "on multi-area selections" 
    End If 
End Sub

En este ejemplo, se usa el método AdvancedFilter del objeto Range para crear una lista de valores únicos y el número de veces que aparecen dichos valores únicos en el rango de la columna A.This example uses the AdvancedFilter method of the Range object to create a list of the unique values, and the number of times those unique values occur, in the range of column A.

Sub Create_Unique_List_Count()
    'Excel workbook, the source and target worksheets, and the source and target ranges.
    Dim wbBook As Workbook
    Dim wsSource As Worksheet
    Dim wsTarget As Worksheet
    Dim rnSource As Range
    Dim rnTarget As Range
    Dim rnUnique As Range
    'Variant to hold the unique data
    Dim vaUnique As Variant
    'Number of unique values in the data
    Dim lnCount As Long
    
    'Initialize the Excel objects
    Set wbBook = ThisWorkbook
    With wbBook
        Set wsSource = .Worksheets("Sheet1")
        Set wsTarget = .Worksheets("Sheet2")
    End With
    
    'On the source worksheet, set the range to the data stored in column A
    With wsSource
        Set rnSource = .Range(.Range("A1"), .Range("A100").End(xlDown))
    End With
    
    'On the target worksheet, set the range as column A.
    Set rnTarget = wsTarget.Range("A1")
    
    'Use AdvancedFilter to copy the data from the source to the target,
    'while filtering for duplicate values.
    rnSource.AdvancedFilter Action:=xlFilterCopy, _
                            CopyToRange:=rnTarget, _
                            Unique:=True
                            
    'On the target worksheet, set the unique range on Column A, excluding the first cell
    '(which will contain the "List" header for the column).
    With wsTarget
        Set rnUnique = .Range(.Range("A2"), .Range("A100").End(xlUp))
    End With
    
    'Assign all the values of the Unique range into the Unique variant.
    vaUnique = rnUnique.Value
    
    'Count the number of occurrences of every unique value in the source data,
    'and list it next to its relevant value.
    For lnCount = 1 To UBound(vaUnique)
        rnUnique(lnCount, 1).Offset(0, 1).Value = _
            Application.Evaluate("COUNTIF(" & _
            rnSource.Address(External:=True) & _
            ",""" & rnUnique(lnCount, 1).Text & """)")
    Next lnCount
    
    'Label the column of occurrences with "Occurrences"
    With rnTarget.Offset(0, 1)
        .Value = "Occurrences"
        .Font.Bold = True
    End With

End Sub

MétodosMethods

PropiedadesProperties

Vea tambiénSee also

Soporte técnico y comentariosSupport and feedback

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación?Have questions or feedback about Office VBA or this documentation? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.