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.

  • ๐ŸŽฏ Definiciรณn: El objeto Range apunta a una sola celda, una fila, una columna, una selecciรณn o un rango 3D.
  • ๐Ÿงฌ Jerarquรญa: Una referencia totalmente cualificada lee Aplicaciรณn, Libros de trabajo, Hojas de cรกlculo y luego Rango.
  • ๐Ÿท๏ธ Propiedades y mรฉtodos: Una propiedad almacena informaciรณn sobre el objeto, y un mรฉtodo realiza una acciรณn como Seleccionar o Combinar.
  • ๐Ÿ”ข Propiedad de las cรฉlulas: Cells(Row, Column) accede a una celda por su nรบmero, lo cual resulta adecuado para un bucle de programaciรณn.
  • โœ๏ธ Leyendo y escribiendo: La propiedad Value recupera el contenido de una celda y, a la vez, escribe contenido nuevo.
  • โ†”๏ธ Propiedad de desplazamiento: La operaciรณn Offset desplaza una referencia un nรบmero determinado de filas y columnas desde su celda de inicio.

Objeto de rango de Excel VBA

ยฟ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

  1. La palabra clave "Rango".
  2. Parรฉntesis que siguen a la palabra clave
  3. Rango de celdas relevantes
  4. 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.

Celda รบnica usando la propiedad Worksheet.Range

Paso 2) En este paso,

  • Haga clic en Celda รบnica usando la propiedad Worksheet.Range .
  • 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.

Celda รบnica usando la propiedad Worksheet.Range

Paso 3) En el siguiente paso,

  • Haga clic en el botรณn Macro Celda รบnica usando la propiedad Worksheet.Range desde el menรบ superior. Se abrirรก la ventana de abajo.
  • En esta ventana, haga clic en el botรณn "editar".

Celda รบnica usando la propiedad Worksheet.Range

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

Celda รบnica usando la propiedad Worksheet.Range

Paso 5) Ahora guarda el archivo Celda รบnica usando la propiedad Worksheet.Range y ejecute el programa como se muestra a continuaciรณn.

Celda รบnica usando la propiedad Worksheet.Range

Paso 6) Verรก que la celda "A1" estรก seleccionada despuรฉs de la ejecuciรณn del programa.

Celda รบnica usando la propiedad Worksheet.Range

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

Preguntas Frecuentes

Use Cells(Rows.Count, 1).End(xlUp).Row. Empieza en la parte inferior de la columna A y salta a la รบltima celda que contiene datos, lo que es mรกs fiable que UsedRange despuรฉs de que se hayan eliminado filas.

Cada operaciรณn de lectura o escritura implica el intercambio de cรณdigo entre VBA y Excel. Cargue el rango en una matriz con una sola asignaciรณn, procese la matriz en memoria y, a continuaciรณn, escrรญbala de nuevo en una sola instrucciรณn. Desactivar la actualizaciรณn de pantalla tambiรฉn puede ser รบtil.

Generalmente se debe a una direcciรณn no vรกlida, a un nombre de hoja inexistente o a un intento de seleccionar un rango en una hoja de cรกlculo inactiva. Califique la referencia con la hoja o active la hoja primero.

Sรญ. Pegue el cรณdigo grabado y un asistente de IA reemplazarรก cada par Select y Selection con una referencia Range directa y completamente calificada. Ejecute ambas versiones en una copia y compare la hoja antes de guardar.ping el cambio.

Sรญ. Describe el objetivo, por ejemplo, todas las filas completas de las columnas A a D en la hoja de datos, y un asistente de IA te devolverรก la expresiรณn de rango correspondiente. Verifรญcala con una pequeรฑa muestra antes de aplicarla a datos reales.

Resumir este post con: