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.

Nota

¿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

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
  • 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.

Nota

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(row, column), donde row es el índice de fila y column es el índice de columna, para devolver una sola celda.Use Cells (row, column), where row is the row index and column is the column index, to return a single cell. En el ejemplo siguiente se establece el valor para la celda A1 a 24.The following example sets the value of cell A1 to 24.

Worksheets(1).Cells(1, 1).Value = 24

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).

Nota

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

Use expression.Cells (fila, columna), donde expression es una expresión que devuelve un objeto Range y fila y columna son relativas a la esquina superior izquierda del rango, para devolver parte de un rango.Use_expression_.Cells (row, column), where expression is an expression that returns a Range object, and row and column are relative to the upper-left corner of the range, to return part of a range. En el ejemplo siguiente se establece la fórmula para la celda C5.The following example sets the formula for cell C5.

Worksheets(1).Range("C5:C10").Cells(1, 1).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.

Nota

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 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.