Clase Range (Excel VBA)

La clase Range 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.

Los principales procedimientos de la clase Range son Activate, Copy, Delete y Select

Set

Para usar una variable de clase Range, primero debe ser instanciado, por ejemplo

Dim rng as Range
Set rng = ActiveCell

Los siguientes procedimientos se pueden usar para establecer variables de clase Range : Areas, AboveAverage.AppliesTo, AllowEditRange.Range, Application.ActiveCell, Application.Cells, Application.Columns, Application.Intersect, Application.Range, Application.Rows, Application.Union, Application.PreviousSelections, Application.ThisCell, Areas.Item, AutoFilter.Range, Axis.CategoryNames, ChartObject.BottomRightCell, ChartObject.TopLeftCell, ColorScale.AppliesTo, Databar.AppliesTo, DisplayFormat.NumberFormat, DisplayFormat.AddIndent, DisplayFormat.HorizontalAlignment, DisplayFormat.Orientation, DisplayFormat.VerticalAlignment, DisplayFormat.FormulaHidden, DisplayFormat.IndentLevel, DisplayFormat.MergeCells, DisplayFormat.NumberFormatLocal, DisplayFormat.ShrinkToFit, FormatCondition.AppliesTo, HPageBreak.Location, Hyperlink.Range, IconSetCondition.AppliesTo, ListColumn.Range, ListColumn.DataBodyRange, ListColumn.Total, ListObject.Range, ListObject.DataBodyRange, ListObject.HeaderRowRange, ListObject.InsertRowRange, ListObject.TotalsRowRange, ListRow.Range, Name.RefersToRange, OLEObject.BottomRightCell, OLEObject.TopLeftCell, Pane.VisibleRange, Parameter.SourceRange, PivotCell.Range, PivotField.DataRange, PivotField.LabelRange, PivotItem.DataRange, PivotItem.LabelRange, PivotTable.DataBodyRange, PivotTable.ColumnRange, PivotTable.DataLabelRange, PivotTable.GetPivotData, PivotTable.PageRange, PivotTable.PageRangeCells, PivotTable.RowRange, PivotTable.TableRange1, PivotTable.TableRange2, QueryTable.Destination, QueryTable.ResultRange, Cells, Columns, Range, Rows, Item, Next, Previous, Resize, ColumnDifferences, CurrentArray, CurrentRegion, Dependents, DirectDependents, DirectPrecedents, End, EntireColumn, EntireRow, Find, FindNext, FindPrevious, MergeArea, Offset, Precedents, RowDifferences, SpecialCells, SpillingToRange, SpillParent, Ranges.Item, Scenario.ChangingCells, Shape.BottomRightCell, Shape.TopLeftCell, Sort.Rng, SortField.Key, Sparkline.Location, SparklineGroup.Location, SparklineGroups.Parent, TableObject.Destination, TableObject.ResultRange, Top10.AppliesTo, UniqueValues.AppliesTo, VPageBreak.Location, Window.ActiveCell, Window.VisibleRange, Window.RangeFromPoint, Window.RangeSelection, Worksheet.Cells, Worksheet.Columns, Worksheet.Range, Worksheet.Rows, Worksheet.CircularReference, Worksheet.UsedRange, Worksheet.XmlDataQuery, Worksheet.XmlMapQuery y WorkbookConnection.Ranges

For Each

A continuación, se muestra un ejemplo de cómo procesar los elementos Range en una colección.

Dim rng As Range: Set rng = 
Dim rngArea As Range
For Each rngArea In rng.Areas
	With rngArea
		
	End With
Next rngArea

Temas

Algunos procedimientos de esta clase se han agrupado en temas y se describen en páginas temáticas separadas

Name with its procedures ApplyNames, CreateNames y ListNames
Format with its procedures ApplyOutlineStyles, BorderAround, Borders, ClearFormats, ColumnWidth, DisplayFormat, Font, FormatConditions, Height, Left, NumberFormat, NumberFormatLocal, RowHeight, Style, Top, UseStandardHeight, UseStandardWidth y Width
Row with its procedures CalculateRowMajorOrder, EntireRow, ListHeaderRows, Row, RowDifferences y Rows
Cell with its procedures Cells, MergeCells, PivotCell, SetCellDataTypeFromCell y SpecialCells
Column with its procedures Column, ColumnDifferences, Columns, EntireColumn y TextToColumns
Copy with its procedures Copy, CopyFromRecordset y CopyPicture
Formula with its procedures Formula2, Formula2Local, Formula2R1C1, Formula2R1C1Local, FormulaArray, FormulaHidden, FormulaLocal, FormulaR1C1, FormulaR1C1Local y HasFormula
Show/Hide with its procedures Hidden, Show, ShowCard, ShowDependents, ShowDetail, ShowErrors y ShowPrecedents
Print with its procedures PageBreak, PrintOut y PrintPreview
Sort/Order with its procedures ReadingOrder, Sort y SortSpecial

Métodos

Los principales métodos de la clase Range son

Activate - Activa una sola celda que debe estar en la selección actual.

ActiveCell.Activate

Delete - Elimina el objeto.

ActiveCell.Delete

Select - Selecciona el objeto.

ActiveCell.Select

Otros Métodos

AddComment - Agrega un comentario al rango.

AddCommentThreaded - Agrega un nuevo comentario de encadenamiento moderno al intervalo si no hay ningún comentario ya existente.

AdvancedFilter - Filtra o copia datos desde una lista en función de un rango de criterios.

AllocateChanges - Realiza una operación de reescritura para todas las celdas editadas de un rango basado en un origen de datos OLAP.

AutoComplete - Devuelve una coincidencia de Autocompletar de la lista.

AutoFill - Realiza el autorelleno de las celdas en el rango especificado.

AutoFilter - Filtra una lista mediante Autofiltro.

AutoFit - Cambia la anchura de las columnas del rango o la altura de las filas del rango para conseguir el mejor ajuste.

AutoOutline - Crea automáticamente un esquema en el rango especificado.

Calculate - Calcula todos los libros abiertos, una hoja de cálculo específica de un libro o un rango de celdas especificado en una hoja de cálculo, tal como se muestra en la tabla de la sección Comentarios.

CheckSpelling - Comprueba la ortografía de un objeto.

Clear - Borra todo el objeto.

ClearComments - Borra todos los comentarios de celda del rango especificado.

ClearContents - Borra las fórmulas y los valores del rango.

ClearHyperlinks - Quita todos los hipervínculos del rango especificado.

ClearNotes - Borra las notas escritas y las notas sonoras de todas las celdas del rango especificado.

ClearOutline - Borra el esquema del rango especificado.

Consolidate - Consolida datos de varios rangos de varias hojas de cálculo en un solo rango de una sola hoja de cálculo.

ConvertToLinkedDataType - Intenta convertir todas las celdas del rango en un tipo de datos vinculados como Cotizaciones o Geografía.

Cut - Corta el objeto y lo pega en el Portapapeles o en un destino especificado.

DataSeries - Crea una serie de datos en el rango especificado.

DataTypeToText - Si alguna de las celdas del rango es un tipo de datos vinculado, como cotizaciones o geografía, esta llamada convertirá sus valores en texto.

Dirty - Designa un rango que se deberá actualizar cuando se realice la próxima actualización.

DiscardChanges - Descarta todos los cambios realizados en las celdas editadas del rango.

ExportAsFixedFormat - Exporta a un archivo con el formato especificado.

FillDown - Rellena hacia abajo desde la celda o celdas superiores del rango especificado hasta el final del rango.

FillLeft - Rellena hacia la izquierda desde la celda o celdas que están más a la derecha en el rango especificado.

FillRight - Rellena hacia la derecha desde la celda o celdas que están más a la izquierda en el rango especificado.

FillUp - Rellena hacia arriba desde la celda o celdas inferiores del rango especificado hasta el principio del rango.

Find - Busca información específica en una hoja de cálculo.

FindNext - Sigue una búsqueda iniciada con el método Find .

FindPrevious - Sigue una búsqueda iniciada con el método Find .

FlashFill - True indica que la característica de relleno flash de Excel se ha habilitado y está activa.

FunctionWizard - Ejecuta el Asistente para funciones en la celda superior izquierda del rango.

Group - Cuando el objeto Range representa una sola celda del rango de datos de un campo de tabla dinámica, el método Group realiza un agrupamiento numérico o basado en la fecha en ese campo.

Insert - Inserta una celda o un rango de celdas en la hoja de cálculo o en la hoja de macros y desplaza las otras celdas para crear espacio.

InsertIndent - Agrega una sangría al rango especificado.

Justify - Reorganiza el texto de un rango para rellenarlo uniformemente.

Merge - Crea una celda combinada a partir del objeto Range especificado.

NavigateArrow - Mueve una flecha de seguimiento del rango especificado a la celda o celdas precedentes, dependientes o causantes de error.

NoteText - Devuelve o establece la nota asociada con la celda que se encuentra en la esquina superior izquierda del rango.

Parse - Redistribuye un rango de datos y lo divide en varias celdas.

PasteSpecial - Pega un objeto Range que se ha copiado en el rango especificado.

RemoveDuplicates - Quita de un rango de valores los valores duplicados.

RemoveSubtotal - Elimina los subtotales de una lista.

Replace - Devuelve un valor Boolean que indica los caracteres de las celdas del rango especificado.

Run - Ejecuta la macro de Microsoft Excel en esta ubicación.

SetPhonetic - Crea objetos Phonetic para todas las celdas del rango especificado.

Speak - Hace que las celdas del rango se digan por filas o por columnas.

Subtotal - Crea subtotales para el rango (o la región actual, si el rango sólo tiene una celda).

Table - Crea una tabla de datos basada en valores de entrada y fórmulas que se definen en una hoja de cálculo.

Ungroup - Promueve un rango en un esquema (es decir, reduce su nivel de esquema).

UnMerge - Separa un área combinada en celdas individuales.

Propiedades

Areas.Count Devuelve un valor Long que representa el número de objetos de la colección.

Dim lngCount As Long
lngCount = ActiveCell.Areas.Count

Areas.Item Devuelve un solo objeto de una colección.

Dim rngItem As Range
Set rngItem = ActiveCell.Areas(Index:=1)

Areas.Parent Devuelve el objeto primario del objeto especificado.

Dim objParent As Object
Set objParent = ActiveCell.Areas.Parent

AddIndent Devuelve o establece un valor de tipo Variant que indica si se aplica sangría al texto automáticamente cuando la alineación del texto de una celda se establece en una distribución Igualada (ya sea horizontal o vertical).

ActiveCell.AddIndent = True

Address Devuelve un valor String que representa la referencia de rango en el lenguaje de la macro.

Dim strAddress As String
strAddress = ActiveCell.Address

AddressLocal Devuelve la referencia del rango para el rango especificado en el idioma del usuario.

Dim strAddressLocal As String
strAddressLocal = ActiveCell.AddressLocal

AllowEdit Devuelve un valor de tipo Boolean que indica si el rango se puede modificar en una hoja de cálculo protegida.

Dim booAllowEdit As Boolean
booAllowEdit = ActiveCell.AllowEdit

Areas Devuelve una colección areas que representa todos los rangos de una selección de varias áreas.

Dim arsAreas As Areas
Set arsAreas = ActiveCell.Areas

Characters Devuelve un objeto Characters que representa un rango de caracteres dentro del texto del objeto.

Dim chrsCharacters As Characters
Set chrsCharacters = ActiveCell.Characters

Comment Devuelve un objeto comment que representa el comentario asociado a la celda de la esquina superior izquierda del rango.

Dim cmmComment As Comment
Set cmmComment = ActiveCell.Comment

CommentThreaded Devuelve un objeto CommentThreaded que representa el comentario encadenado asociado con la celda de la esquina superior izquierda del rango.

Dim ctdCommentThreaded As CommentThreaded
Set ctdCommentThreaded = ActiveCell.CommentThreaded

Count Devuelve un valor Long que representa el número de objetos de la colección.

Dim lngCount As Long
lngCount = ActiveCell.Count

CountLarge Devuelve un valor que representa el número de objetos de la colección.

Dim lngCountLarge As Long
lngCountLarge = ActiveCell.CountLarge

CurrentArray Si la celda especificada forma parte de una matriz, devuelve un objeto Range que representa toda la matriz.

Dim rngCurrentArray As Range
Set rngCurrentArray = ActiveCell.CurrentArray

CurrentRegion Devuelve un objeto Range que representa la región actual.

Dim rngCurrentRegion As Range
Set rngCurrentRegion = ActiveCell.CurrentRegion

Dependents Devuelve un objeto Range que representa el rango que contiene todas las celdas dependientes de una celda.

Dim rngDependents As Range
Set rngDependents = ActiveCell.Dependents

DirectDependents Devuelve un objeto Range que representa el rango que contiene todas las celdas dependientes directas de una celda.

Dim rngDirectDependents As Range
Set rngDirectDependents = ActiveCell.DirectDependents

DirectPrecedents Devuelve un objeto Range que representa el rango que contiene todas las celdas precedentes directas de una celda.

Dim rngDirectPrecedents As Range
Set rngDirectPrecedents = ActiveCell.DirectPrecedents

End Devuelve un objeto Range que representa la celda al final de la región que contiene el rango de origen.

Dim rngEnd As Range
Set rngEnd = ActiveCell.End(Direction:=xlDown)

Errors Permite al usuario tener acceso a opciones de comprobación de errores.

Dim errsErrors As Errors
Set errsErrors = ActiveCell.Errors

HasArray True si la celda especificada forma parte de una fórmula de matriz.

Dim booHasArray As Boolean
booHasArray = ActiveCell.HasArray

HasRichDataType True si todas las celdas del rango contienen un tipo de datos enriquecidos.

Dim booHasRichDataType As Boolean
booHasRichDataType = ActiveCell.HasRichDataType

HasSpill True si todas las celdas del rango forman parte de un intervalo derramado; False si ninguna de las celdas del rango forma parte de un intervalo derramado; en caso contrario, es null .

Dim booHasSpill As Boolean
booHasSpill = ActiveCell.HasSpill

HorizontalAlignment Devuelve o establece un valor de tipo Variant que representa la alineación horizontal del objeto especificado.

ActiveCell.HorizontalAlignment = xlHAlignCenter

Hyperlinks Devuelve una colección Hyperlinks que representa los hipervínculos del rango.

Dim hypsHyperlinks As Hyperlinks
Set hypsHyperlinks = ActiveCell.Hyperlinks

ID Devuelve o establece un valor de tipo String que representa el rótulo de identificación de la celda especificada cuando la página se guarda como una página web.

ActiveCell.ID =

IndentLevel Devuelve o establece un valor de tipo Variant que representa el nivel de sangría de la celda o del rango.

ActiveCell.IndentLevel = 15

Interior Devuelve un objeto Interior que representa el interior del objeto especificado.

Dim intInterior As Interior
Set intInterior = ActiveCell.Interior

Item Devuelve un objeto Range que representa un rango desplazado con respecto al rango especificado.

ActiveCell(RowIndex:=1) =

LinkedDataTypeState Devuelve información sobre el estado de los tipos de datos vinculados, como Cotizaciones o Geografía, en el rango.

Dim xldLinkedDataTypeState As XlLinkedDataTypeState
xldLinkedDataTypeState = ActiveCell.LinkedDataTypeState

ListObject Devuelve un objeto ListObject para el objeto de intervalo .

Dim lstobjListObject As ListObject
Set lstobjListObject = ActiveCell.ListObject

LocationInTable Devuelve una constante que describe la parte del informe de tabla dinámica que contiene la esquina superior izquierda del rango especificado.

Dim xliLocationInTable As XlLocationInTable
xliLocationInTable = ActiveCell.LocationInTable

Locked Devuelve o establece un valor Variant que indica si el objeto está bloqueado.

ActiveCell.Locked = True

MDX Devuelve el nombre MDX del objeto Range especificado.

Dim strMDX As String
strMDX = ActiveCell.MDX

MergeArea Devuelve un objeto Range que representa el rango combinado que contiene la celda especificada.

Dim rngMergeArea As Range
Set rngMergeArea = ActiveCell.MergeArea

Name Devuelve o establece un valor de tipo Variant que representa el nombre del objeto.

ActiveCell.Name =

Next Devuelve un objeto Range que representa la celda siguiente.

Dim rngNext As Range
Set rngNext = ActiveCell.Next

Offset Devuelve un objeto Range que representa un rango desplazado del rango especificado.

Dim rngOffset As Range
Set rngOffset = ActiveCell.Offset

Orientation Devuelve o establece un valor de tipo Variant que representa la orientación del texto.

ActiveCell.Orientation = xlDownward

OutlineLevel Devuelve o establece el nivel de esquema actual de la columna o fila especificada.

ActiveCell.OutlineLevel =

Parent Devuelve el objeto primario del objeto especificado.

Dim wsParent As Worksheet
Set wsParent = ActiveCell.Parent

Phonetic Devuelve el objeto Phonetic , que contiene información sobre una cadena de texto fonético específica de una celda.

Dim phnPhonetic As Phonetic
Set phnPhonetic = ActiveCell.Phonetic

Phonetics Devuelve la colección Phonetics del intervalo.

Dim phnsPhonetics As Phonetics
Set phnsPhonetics = ActiveCell.Phonetics

PivotField Devuelve un objeto PivotField que representa el campo de tabla dinámica que contiene la esquina superior izquierda del rango especificado.

Dim pvtfPivotField As PivotField
Set pvtfPivotField = ActiveCell.PivotField

PivotItem Devuelve un objeto PivotItem que representa el elemento de tabla dinámica que contiene la esquina superior izquierda del rango especificado.

Dim pvtiPivotItem As PivotItem
Set pvtiPivotItem = ActiveCell.PivotItem

PivotTable Devuelve un objeto PivotTable que representa el informe de tabla dinámica que contiene la esquina superior izquierda del rango especificado.

Dim pvtPivotTable As PivotTable
Set pvtPivotTable = ActiveCell.PivotTable

Precedents Devuelve un objeto Range que representa todas las celdas precedentes de una celda.

Dim rngPrecedents As Range
Set rngPrecedents = ActiveCell.Precedents

PrefixCharacter Devuelve el carácter de prefijo de la celda.

Dim strPrefixCharacter As String
strPrefixCharacter = ActiveCell.PrefixCharacter

Previous Devuelve un objeto Range que representa la celda anterior.

Dim rngPrevious As Range
Set rngPrevious = ActiveCell.Previous

QueryTable Devuelve un objeto QueryTable que representa la tabla de consulta que forma una intersección con el objeto Range especificado.

Dim qrytblQueryTable As QueryTable
Set qrytblQueryTable = ActiveCell.QueryTable

Range Devuelve un objeto Range que representa una celda o un rango de celdas.

Dim lngCell1 As Long: lngCell1 = "A1"
Dim rngRange As Range
Set rngRange = ActiveCell.Range(Cell1:=lngCell1)

Resize Cambia el tamaño del rango especificado.

Dim rngResize As Range
Set rngResize = ActiveCell.Resize

SavedAsArray True si todas las celdas del rango se guardarían en el archivo como una fórmula de matriz; False si ninguna de las celdas del rango se guarda en el archivo como una fórmula de matriz heredada; en caso contrario, es null .

Dim booSavedAsArray As Boolean
booSavedAsArray = ActiveCell.SavedAsArray

ServerActions Especifica las acciones que se pueden realizar en el servidor SharePoint con un objeto Range.

Dim actsServerActions As Actions
Set actsServerActions = ActiveCell.ServerActions

ShrinkToFit Devuelve o establece un valor de tipo Variant que indica si el texto se reduce automáticamente para ajustarse al ancho de columna disponible.

ActiveCell.ShrinkToFit = True

SoundNote Esta propiedad no debe ser usada.

Dim sneSoundNote As SoundNote
Set sneSoundNote = ActiveCell.SoundNote

SparklineGroups Devuelve un objeto SparklineGroups que representa un grupo existente de minigráficos del intervalo especificado.

Dim sgsSparklineGroups As SparklineGroups
Set sgsSparklineGroups = ActiveCell.SparklineGroups

SpillingToRange

Dim rngSpillingToRange As Range
Set rngSpillingToRange = ActiveCell.SpillingToRange

SpillParent Si una celda es un miembro de un derrame, devuelve la celda que contiene la fórmula responsable.

Dim rngSpillParent As Range
Set rngSpillParent = ActiveCell.SpillParent

Summary True si el rango es una fila o columna de resumen de esquema.

Dim booSummary As Boolean
booSummary = ActiveCell.Summary

Text Devuelve el texto con formato para el objeto especificado.

Dim strText As String
strText = ActiveCell.Text

Validation Devuelve el objeto Validation que representa la validación de datos para el rango especificado.

Dim vldValidation As Validation
Set vldValidation = ActiveCell.Validation

Value Devuelve o establece un valor Variante que representa el valor del rango especificado.

ActiveCell.Value =

Value2 Devuelve o establece el valor de la celda.

ActiveCell.Value2 =

VerticalAlignment Devuelve o establece un valor de tipo Variant que representa la alineación vertical del objeto especificado.

ActiveCell.VerticalAlignment = xlVAlignBottom

Worksheet Devuelve un objeto Worksheet que representa la hoja de cálculo que contiene el rango especificado.

Dim wsWorksheet As Worksheet
Set wsWorksheet = ActiveCell.Worksheet

WrapText Devuelve o establece un valor de tipo Variant que indica si Microsoft Excel ajusta de forma automática el texto del objeto.

ActiveCell.WrapText = True

XPath Devuelve un objeto XPath que representa la expresión XPath del elemento asignado al objeto Range especificado.

Dim xphXPath As XPath
Set xphXPath = ActiveCell.XPath

Ranges.Count Devuelve el número de objetos de la colección.

Dim lngCount As Long
lngCount = ActiveWorkbook.Connections(1).Ranges.Count

Ranges.Item Devuelve un objeto Range que representa un rango de elementos de un libro.

Dim rngItem As Range
Set rngItem = ActiveWorkbook.Connections(1).Ranges(Index:=1)

Ranges.Parent Devuelve el objeto primario del objeto especificado.

Dim objParent As Object
Set objParent = ActiveWorkbook.Connections(1).Ranges.Parent