Objeto de rango de Excel VBA
โก Resumen inteligente
El objeto Range de Excel VBA representa una celda o un grupo de celdas en una hoja de cรกlculo. Esta pรกgina explica la jerarquรญa del objeto, las propiedades Range y Cells, la selecciรณn y referencia de celdas, la lectura y escritura de valores, y la propiedad Offset.

ยฟQuรฉ es el rango VBA?
El objeto de rango de VBA representa una celda o varias celdas en su hoja de cรกlculo de Excel. Es el objeto mรกs importante de Excel VBA. Al utilizar el objeto de rango de Excel VBA, puede consultar,
- una sola celda
- Una fila o una columna de celdas.
- Una selecciรณn de cรฉlulas.
- Una gama tridimensional
Como comentamos en nuestro tutorial anterior, VBA se utiliza para grabar y ejecutar un MacroPero, ยฟcรณmo identifica VBA quรฉ datos de la hoja necesitan ser procesados? Aquรญ es donde los objetos Range de VBA resultan รบtiles.
Introducciรณn a la referencia a objetos en VBA
Hacer referencia al objeto de rango VBA de Excel y al calificador de objeto.
- Calificador de objetos: Esto se utiliza para hacer referencia al objeto. Especifica el libro u hoja de trabajo al que se refiere.
Para manipular estos valores de celda, Propiedades y Mรฉtodos son usados.
- Propiedad: Una propiedad almacena informaciรณn sobre el objeto.
- Mรฉtodo: Un mรฉtodo es una acciรณn del objeto que realizarรก. El objeto de rango puede realizar acciones como seleccionar, copiar, borrar, ordenar, etc.
VBA sigue un patrรณn de jerarquรญa de objetos para referirse a un objeto en Excel. Debes seguir la estructura que se muestra a continuaciรณn. Recuerda que el punto (.dot) conecta el objeto en cada uno de los diferentes niveles.
Aplicaciรณn.Libros.Hojas.de.trabajo.Rango
Se puede acceder a esa jerarquรญa a travรฉs de dos propiedades diferentes, y la propiedad Range es la que se utiliza con mayor frecuencia.
Cรณmo hacer referencia al objeto de rango de Excel VBA usando la propiedad Rango
La propiedad de rango se puede aplicar en dos tipos diferentes de objetos.
- Objetos de hoja de trabajo
- Objetos de rango
Sintaxis de la propiedad de rango
- La palabra clave "Rango".
- Parรฉntesis que siguen a la palabra clave
- Rango de celdas relevantes
- Cotizaciรณn (" ")
Application.Workbooks("Book1.xlsm").Worksheets("Sheet1").Range("A1")
Cuando se refiere al objeto Rango, como se muestra arriba, se hace referencia a รฉl como referencia totalmente calificadaLe has indicado a Excel exactamente quรฉ rango quieres, en quรฉ hoja y en quรฉ hoja de cรกlculo.
Ejemplo: MensajeBox Hojas de cรกlculo("Hoja1").Rango("A1").Valor
Usando la propiedad Rango, puede realizar muchas tareas como,
- Consulte una celda รบnica usando la propiedad de rango
- Consulte una sola celda usando la propiedad Worksheet.Range
- Hacer referencia a una fila o columna completa
- Consulte las celdas combinadas usando la propiedad Worksheet.Range y muchas mรกs
Como tal, serรก demasiado extenso cubrir todos los escenarios para la propiedad de rango. Para los escenarios mencionados anteriormente, demostraremos un ejemplo solo para uno. Consulte una celda รบnica usando la propiedad de rango.
Consulte una sola celda usando la propiedad Worksheet.Range
Para hacer referencia a una celda, pase su direcciรณn a la propiedad Range como una cadena de texto.
La sintaxis es simple โRango(โCeldaโ)โ.
Aquรญ, usaremos el comando ".Seleccionar" para seleccionar la celda individual de la hoja.
Paso 1) En este paso, abre tu archivo de Excel.
Paso 2) En este paso,
- Haga clic en
.
- Se abrirรก una ventana.
- Ingrese el nombre de su programa aquรญ y haga clic en el botรณn "Aceptar".
- Lo llevarรก al archivo principal de Excel, desde el menรบ superior haga clic en el botรณn "detener" grabaciรณn para detener la grabaciรณn de Macro.
Paso 3) En el siguiente paso,
- Haga clic en el botรณn Macro
desde el menรบ superior. Se abrirรก la ventana de abajo.
- En esta ventana, haga clic en el botรณn "editar".
Paso 4) El paso anterior abrirรก el editor de cรณdigo VBA para el archivo llamado "Single Cell Range". Introduzca el cรณdigo que se muestra a continuaciรณn para seleccionar el rango "A1" de la hoja de Excel.
Sub SingleCellRange() Range("A1").Select End Sub
Paso 5) Ahora guarda el archivo y ejecute el programa como se muestra a continuaciรณn.
Paso 6) Verรก que la celda "A1" estรก seleccionada despuรฉs de la ejecuciรณn del programa.
Asimismo, puede seleccionar una celda con un nombre especรญfico. Por ejemplo, si desea buscar una celda con el nombre โGuru99- Tutorial de VBAโ. Debes ejecutar el comando como se muestra a continuaciรณn. Seleccionarรก la celda con ese nombre.
Rango("Guru99- Tutorial de VBAโ).Seleccionar
Para aplicar otro objeto de rango aquรญ estรก el cรณdigo de muestra.
| Rango para seleccionar celda en Excel | Rango declarado |
|---|---|
| Para una sola fila | Rango(โ1:1โ) |
| Para una sola columna | Rango (โA:Aโ) |
| Para celdas contiguas | Rango(โA1:C5โ) |
| Para celdas no contiguas | Rango(โA1:C5, F1:F5โ) |
| Para intersecciรณn de dos rangos | Rango(โA1:C5 F1:F5โ) (Para la celda de intersecciรณn, recuerde que no hay operador de coma) |
| Para fusionar celda | Rango(โA1:C5โ) (Para fusionar celdas use el comando "fusionar") |
Seleccionar una celda es solo el primer paso. En la prรกctica, una macro lee el contenido de una celda y escribe un nuevo valor.
Cรณmo leer y escribir valores con el objeto Range.
Casi todas las macros que interactรบan con una hoja de cรกlculo realizan una de dos acciones: leen un valor de una celda o escriben uno. Ambas utilizan la propiedad Valor y ninguna requiere que la celda estรฉ seleccionada previamente.
Sub ReadAndWrite() Dim Price As Double Dim Qty As Long ' Read two values out of the sheet Price = Range("B1").Value Qty = Range("B2").Value ' Write the calculated result back Range("B3").Value = Price * Qty ' Fill a whole block in one statement Range("D1:D10").Value = "Guru99" ' Clear only the contents, keeping the formatting Range("F1:F10").ClearContents End Sub
Cuatro puntos hacen que este patrรณn sea fiable.
- Seleccionar no es obligatorio: Contenidos Rango(โB3โ).Valor = 10 es mรกs rรกpido y seguro que seleccionar primero la celda. Las macros grabadas estรกn llenas de .Select porque la grabadora imita las acciones del ratรณn, no porque el cรณdigo lo necesite.
- Valor versus texto: .Value devuelve los datos subyacentes, mientras que .Text devuelve la cadena formateada que se muestra en pantalla, la cual puede truncarse segรบn el ancho de la columna. Lea .Value en los cรกlculos.
- Bloques completos en una sola lรญnea: Asignar a un rango de varias celdas llena todas las celdas a la vez, lo que es mucho mรกs rรกpido que buscar.ping.
- Aclara lo correcto: ClearContents elimina solo los valores, Clear elimina tambiรฉn el formato y Delete elimina las celdas y desplaza las que las rodean.
La propiedad Range identifica una celda mediante su letra y nรบmero. Una segunda propiedad identifica la misma celda mediante dos nรบmeros.
Propiedad de la celda
De manera similar al rango, en VBA Tambiรฉn puedes usar la propiedad "Cell". La รบnica diferencia es que tiene una propiedad "item" que se usa para hacer referencia a las celdas de la hoja de cรกlculo. La propiedad Cell es รบtil en un bucle de programaciรณn.
Por ejemplo,
Cells.item(Fila, Columna). Ambas lรญneas siguientes hacen referencia a la celda A1.
- Celdas.elemento(1,1) O
- Celdas.elemento(1,โAโ)
Diferencia entre rango y celdas en VBA
Las opciones Range y Cells acceden a las mismas celdas de la hoja de cรกlculo por rutas diferentes, y elegir la correcta hace que el cรณdigo sea mรกs corto y fรกcil de leer.
| Punto de diferencia | Autonomรญa | Cรฉlulas |
|---|---|---|
| Formato de direcciรณn | Una cadena de texto, Range(โA1โ) | Dos nรบmeros, Celdas(1, 1) |
| Varias celdas | Sรญ, Rango(โA1:C5โ) | Una cรฉlula a la vez |
| Dentro de un bucle | Necesita concatenaciรณn de cadenas | El nรบmero de fila puede ser el contador del bucle. |
| Legibilidad | Coincide con la direcciรณn que ve en Excel. | La columna 27 es mรกs difรญcil de visualizar que la AA. |
| Uso combinado | Range(Cells(1, 1), Cells(5, 3)) construye A1:C5 a partir de nรบmeros. | |
La regla prรกctica consiste en usar Range para una direcciรณn fija que se pueda leer de un vistazo, y Cells siempre que se calcule un nรบmero de fila o columna en tiempo de ejecuciรณn.
Propiedad de compensaciรณn de rango
La propiedad de desplazamiento de rango seleccionarรก filas/columnas lejos de su posiciรณn original. En funciรณn del rango declarado, se seleccionan las celdas. Vea el ejemplo a continuaciรณn.
Por ejemplo,
Range("A1").Offset(RowOffset:=1, ColumnOffset:=1).Select
El resultado serรก la celda B2. La propiedad Offset desplazarรก la celda A1 una columna y una fila. Puede modificar el valor de RowOffset/ColumnOffset segรบn sea necesario. Puede usar un valor negativo (-1) para desplazar las celdas hacia atrรกs.
Descargue Excel que contiene el cรณdigo anterior
Descargue el archivo Excel anterior. Code






