¿cómo usar rango y celdas en vba?
Introducción al rango y las celdas en VBA
Cuando miras a tu alrededor en un libro de Excel, verás que todo funciona alrededor de las celdas. Una celda y un rango de celdas son donde almacenas tus datos y luego comienza todo.
Para aprovechar al máximo VBA, necesita aprender a usar celdas y rangos en sus códigos. Para ello, es necesario tener un conocimiento sólido de los objetos Range. Al usarlo, puede hacer referencia a las celdas de sus códigos de la siguiente manera:
- Una sola celda.
- Una gama de células
- Una fila o columna
- Una gama tridimensional
El OBJETO DE RANGO es parte de la jerarquía de objetos de Excel: Aplicación ➜ Libros de trabajo ➜ Hojas de trabajo ➜ Rango y en cualquier otro lugar dentro de la hoja de trabajo. Entonces, si escribe código para hacer referencia al objeto RANGE, sería así:
Application.Workbook(“Workbook-Name”).Worksheets(“Sheet-Name”).Range
Al hacer referencia a una celda o un rango de celdas, puede hacer lo siguiente:
- Puedes leer el valor.
- Puede ingresar un valor allí.
- Y puede realizar cambios en el formato.
Para hacer todas estas cosas, necesita aprender cómo hacer referencia a una celda o un rango de celdas y, en la siguiente sección de este tutorial, aprenderá cómo hacer referencia a una celda de diferentes maneras. Para hacer referencia a una celda o un rango de celdas, puede utilizar tres métodos diferentes.
- Propiedad de playa
- Propiedad de la celda
- Propiedad de compensación
Bueno, cuál es mejor entre estos depende de tus necesidades, pero vale la pena conocer los tres para que puedas elegir el que más te convenga.
Entonces empecemos.
Propiedad de playa
La propiedad Range es la forma más común y popular de hacer referencia a un rango en sus códigos VBA. Con la propiedad Rango, simplemente hace referencia a la dirección de la celda. Déjame decirte la sintaxis.
expression.range(address)
Aquí la expresión es una variable que representa un objeto VBA. Entonces, si necesita hacer referencia a la celda A1, la línea de código que debe escribir sería:
Application.Workbook(“Book1”).Worksheets(“Sheet1”).Range(“A1”)
El código anterior le dice a VBA que se refiere a la celda A1 que se encuentra en la hoja de trabajo «Hoja1» y el libro «Libro1».
Nota: Siempre que ingrese una dirección de celda en el objeto de rango, asegúrese de encerrarla entre comillas dobles. Pero aquí hay algo que entender. Dado que está utilizando VBA en Excel, no es necesario utilizar la palabra «Aplicación». Entonces el código sería:
Workbook(“Book1”).Worksheets(“Sheet1”).Range(“A1”)
Y si estás en el Libro 1, puedes reducir aún más tu código:
Worksheets(“Sheet1”).Range(“A1”)
Pero, si ya está en la hoja de trabajo «Hoja1», puede reducir aún más su código y solo puede usar:
Range(“A1”)
Ahora supongamos que desea hacer referencia a un rango completo de celdas (es decir, varias celdas), debe escribir el código de esta manera:
Range("A1:A5")
En el código anterior, se ha referido al rango A1 a A5, que consta de cinco celdas. También puede hacer referencia a un rango con nombre utilizando el objeto de rango. Supongamos que tiene un rango con nombre con el nombre «Descuento de ventas» para hacer referencia a él, puede escribir un código como este:
Range("Sales Discount")
Si desea hacer referencia a un rango no continuo, debe hacer algo como esto:
Range("A1:B5,D5:G10")
Y si desea hacer referencia a una fila o columna completa, debe ingresar un código como el siguiente:
Range("1:1") Range("A:A")
En este punto, comprende claramente cómo referirse a una celda y al rango de celdas. Pero para ser el mejor con él, debes aprender a usarlo para hacer otras cosas.
Aquí tenemos una lista completa de tutoriales que puede utilizar para aprender a trabajar con rangos y celdas en VBA.
- Contar filas usando VBA en Excel
- Fuente Excel VBA (color, tamaño, tipo y negrita)
- Excel VBA Ocultar y mostrar una columna o fila
- Aplicar bordes a una celda usando VBA en Excel
- Encuentre la última fila, columna y celda usando VBA en Excel
- Insertar una fila usando VBA en Excel
- Fusionar celdas en Excel usando código VBA
- Seleccione un rango/celda usando VBA en Excel
- SELECCIONE TODAS las celdas en una hoja de trabajo usando código VBA
- ActiveCell en VBA en Excel
- Método de celdas especiales en VBA en Excel
- Propiedad UsedRange en VBA en Excel
- Ajuste automático de VBA (filas, columnas u hoja de trabajo completa)
- VBA ClearContents (de una celda, rango o hoja de trabajo completa)
- Rango de copia de VBA a otra hoja + libro de trabajo
- VBA Ingrese un valor en una celda (Establecer, Obtener y Cambiar)
- Columna de inserción de VBA (única y múltiple)
- Rango denominado VBA | (Estático + Selección + Dinámico)
- Compensación de rango VBA
- Rango de clasificación VBA | (Descendente, varias columnas, orientación de clasificación
- Texto ajustado de VBA (celda, rango y hoja de trabajo completa)
- VBA comprueba si una celda está vacía + varias celdas
1. Selecciona y activa una celda
Si desea seleccionar una celda, puede utilizar el rango. Seleccione el método. Digamos que si desea seleccionar la celda A5, todo lo que necesita hacer es especificar el rango y luego agregar «.Select» después de eso.
Range(“A1”).Select
Este código le dice a VBA que seleccione la celda A5 y si desea seleccionar un rango de celdas, simplemente consulte ese rango y simplemente agregue «.Select» después de eso.
Range(“A1:A5”).Select
También existe otro método que puedes utilizar para activar una celda.
Range(“A1”).Activate
Aquí debes recordar que solo puedes activar una celda a la vez. Incluso si especifica un rango con el método «.Activate « , seleccionará ese rango pero la celda activa será la primera celda del rango.
2. Ingrese un valor en una celda
Usando la propiedad de rango, puede ingresar un valor en una celda o en un rango de celdas. Entendamos cómo funciona con un ejemplo sencillo:
Range("A1").Value = "Exceladvisor"
En el ejemplo anterior, especificó A1 como rango y luego agregó » .Value «, que le indica a VBA que acceda a la propiedad de valor de la celda.
Lo siguiente que tienes es el signo igual y luego el valor que deseas ingresar (debes usar comillas dobles si ingresas un valor de texto). Para un número, el código sería así:
Range("A1").Value = 9988
Y si desea ingresar un valor en un rango de celdas, me refiero a varias celdas, entonces todo lo que necesita hacer es especificar ese rango.
Range("A1:A5").Value = "Exceladvisor"
Y aquí está el código si te refieres al rango no continuo.
Range("A1:A5 , E2:E3").Value = "Exceladvisor"
3. Copie y pegue una celda/rango
Con la propiedad Rango, puede utilizar el método «.Copy» para copiar una celda y luego pegarla en una celda de destino. Digamos que necesitas copiar la celda A5, el código correspondiente sería:
Range("A5").Copy
Cuando ejecuta este código, simplemente copia la celda A5, pero el siguiente paso es pegar esta celda copiada en una celda de destino. Para hacer esto, debes agregar la palabra clave de destino después de ella y seguida de la celda donde deseas pegarla. Entonces, si quisieras copiar la celda A1 y luego pegarla en la celda E5, el código sería:
Range("A1").Copy Destination:=Range("E5")
De manera similar, si se trata de un rango de varias celdas, el código se vería así:
Range("A1:A5").Copy Destination:=Range("E5:E9")
Si copió un rango de celdas y luego mencionó una celda como rango de destino, VBA copiará todo el rango copiado de la celda que especificó como destino.
Range("A1:A5").Copy Destination:=Range("B1")
Cuando ejecuta el código anterior, VBA copia el rango A1:A5 y lo pega en B1:B5 aunque solo haya mencionado B1 como rango de destino.
Consejo: Al igual que el método “.Copiar”, puedes usar el método “.Cut” para cortar una celda y luego simplemente usar un destino para pegarla.
4. Utilice la propiedad Fuente con la propiedad Rango
Con la propiedad de rango, puede acceder a la propiedad de fuente de una celda, lo que le ayuda a cambiar todas las configuraciones de fuente. Hay un total de 18 propiedades diferentes para la fuente a las que puedes acceder. Digamos que desea poner el texto en negrita en la celda A1, el código sería:
Range("A1").Font.Bold = True
Este código le dice a VBA que acceda a la propiedad BOLD de la fuente que está en el rango A1 y usted ha establecido esta propiedad en VERDADERO. Ahora digamos que desea aplicar tachado a la celda A1, este código de tiempo sería:
Como dije, hay un total de 18 propiedades diferentes que puedes usar, así que asegúrate de revisarlas todas para ver cuál te resulta útil.
5. Borrar formato de una celda
Con el método «.ClearFormats», puede borrar solo el formato de una celda o un rango de celdas. Todo lo que necesita hacer es agregar «.ClearFormat» después de especificar el rango, como se muestra a continuación:
Range("A1").ClearFormats
Cuando ejecuta el código anterior, borra todo el formato de la celda A1 y si desea hacerlo para un rango completo, sabe qué hacer, ¿verdad?
Range("A1:A5").ClearFormats
Ahora el código anterior simplemente eliminará el formato del rango A1 a A5.
Propiedad de la celda
Además de la propiedad RANGE, puede utilizar la propiedad «Celdas» para hacer referencia a una celda o rango de celdas en su hoja de trabajo. En la propiedad de la celda, en lugar de utilizar la referencia de la celda, debe ingresar el número de columna y el número de fila de la celda.
expression.Cells(Row_Number, Column_Number)
Aquí la expresión es un objeto VBA y Row_Number es el número de fila de la celda y Column_Number es la columna de la celda. Entonces, si desea hacer referencia a la celda A5, puede usar el siguiente código:
Cells(5,1)
Ahora este código le dice a VBA que se refiera a la celda que está en la fila número cinco y la columna número uno. Como sugiere su sintaxis, debes ingresar el número de columna como dirección, pero la realidad es que también puedes usar el alfabeto de la columna si lo deseas simplemente rodeándolo entre comillas dobles.
El siguiente código también se referirá a la celda A5:
Cells(5,"A")
Y en VBA para seleccionarlo, simplemente agregue «.Select» al final.
Cells(5,1).Select
El código anterior seleccionará la celda A5 que se encuentra en la quinta fila y la primera columna de la hoja de trabajo.
Propiedad de compensación
Si quieres jugar bien con rangos en VBA, necesitas saber cómo usar la propiedad OFFSET. Es útil hacer referencia a una celda que está a un cierto número de filas y columnas de otra celda.
Supongamos que su celda activa es B5 en este momento y desea navegar a la celda que está 3 columnas a la derecha y 1 fila hacia abajo desde B5, puede hacer este SHIFT. A continuación se muestra la sintaxis que debe utilizar para OFFSET:
expression.Offset (RowOffset, ColumnOffset)
- RowOffset: en este argumento, debe especificar un número que le indicará a VBA cuántas filas desea pasar. Un número positivo define una línea hacia abajo y un número negativo define una línea hacia arriba.
- ColumnOffset : en este argumento, debe especificar un número que le indicará a VBA cuántas columnas desea navegar. Un número positivo define una columna derecha y un número negativo define una columna izquierda.
Escribamos un código simple, por ejemplo, que discutimos anteriormente.
- En primer lugar, debes definir el rango desde el cual deseas navegar y así escribir el siguiente código:
- Después de eso, escriba «.Offset» e ingrese los paréntesis de apertura, como se muestra a continuación:
- A continuación, debe ingresar el número de fila y luego el número de columna donde desea navegar.
- Al final, debe agregar «.Select» para indicarle a VBA que seleccione la celda a la que desea navegar.
Entonces, cuando ejecuta este código, selecciona la celda que está una fila hacia abajo y 3 columnas a la derecha de la celda B5.
Cambiar el tamaño de un rango usando OFFSET
OFFSET no solo le permite navegar a una celda, sino que también puede cambiar el tamaño del rango aún más. Sigamos con el ejemplo anterior.
Range("B5").Offset(1, 3).Select
El código anterior lo dirige a la celda E6, y ahora digamos que necesita seleccionar el rango de celdas que consta de cinco columnas y tres filas de E6. Entonces, lo que debe hacer es después de usar OFFSET, usar la propiedad de cambio de tamaño agregando «.Resize».
Range("B5").Offset(1, 3).Resize
Ahora debe ingresar el tamaño de la fila y el tamaño de la columna. Escriba un paréntesis inicial e ingrese el número para establecer el tamaño de la fila, luego un número para establecer el tamaño de la columna.
Range("B5").Offset(1, 3).Resize(3,5)
Al final, agregue «.Select» para indicarle a VBA que seleccione el rango, y cuando ejecute este código, seleccionará el rango.
Range("B5").Offset(1, 3).Resize(3, 5).Select
Entonces, cuando ejecute este código, seleccionará el rango E6 a I8.
Range("A1").Font.Strikethrough = True