Curso Excel VBA y Macros – Cap. 9 – Referencia y escritura en celdas, rangos, filas y columnas
Un aspecto importante al momento de estar aprendiendo lenguaje VBA (Visual Basic para Aplicaciones) para Excel, es saber hacer referencia a rangos de celdas, ya que la mayoría de nuestro trabajo en esta hoja de cálculo se traduce a generar información y analizarla en las mismas celdas, usando fórmulas y funciones.
Por lo anterior, en este capítulo veremos las maneras en las que podremos hacer referencia a celdas y escribir valores en ellas:
- Escribir en celdas sin seleccionarlas.
- Rellenar rangos usando Range.
- Popiedad Color del objeto Range.
- Propiedad Cells.
- Propiedad Cells del objeto Range.
- Filas (row) y Columnas (columns).
Ver video Capítulo 9 Excel VBA & Macros
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Objeto Range
El objeto Range nos pedirá dos parámetros para hacer referencia a rangos de celdas.
Cell1. Hace referencia al rango inicial.
Cell2 (opciones). Hace referencia al rango final.
Vemos, que el parámetro Cell1 es obligatorio, mientras que el parámetro Cell2 es opcional.
Escribir en celdas sin seleccionarlas
Como vimos anteriormente en otro capítulo, cuando usamos la Grabadora de macros, es necesario seleccionar las celdas las cuales deseamos modificar, para posteriormente ingresarles valores.
El aprender VBA para Excel, nos daremos cuenta que no es necesario seleccionar las celdas, sino que podemos hacer referencia a ellas desde cualquier hoja donde nos encontremos.
Para escribir un valor en la celda A1, podemos usar la siguiente referencia. Toma en cuenta que la celda A1 que se modificará será la que esté en la hoja activa.
[A1] = “valor1”
Ingresar valores en celdas usando el objeto Range
El objeto Range nos permitirá hacer referencia a rangos de celdas o celdas individuales para trabajar con ellas. En el siguiente ejemplo ingresamos un valor en la celda A2.
Range(“A2”).Value = “valor2”
Ahora vemos que podemos ingresar un mismo valor de texto en varias celdas.
Range(“A3:C3”).Value = “valor3”
Incluso podemos hacer referencia a rangos independientes dentro del mismo conjunto de parámetros del objeto Range. En el ejemplo siguiente ingresamos el texto valor4 en los rangos A4:C4 y E4:F4.
Range(“A4:C4,E4:F4”).Value = “valor4”
Ahora vemos que hacemos referencia a 3 celdas independientes dentro de los mismos parámetros del objeto Range.
Range(“A5,C5,E5”).Value = “valor5”
Y haciendo la misma referencia a las 3 celdas anteriores, ahora usamos las propiedades Interior.Color para asignarle un color de tipo RGB a las celdas. Usaremos la función RGB para asignar un color en base a 3 colores, Red, Green y Blue.
Range(“A5,C5,E5”).Interior.Color = RGB(97, 149, 61)
Ahora bien, tomando en cuenta que Range nos pide dos parámetros, en el siguiente ejemplo, aunque pareciera que estamos eligiendo solo las celdas A6 y D6, realmente el rango que se tomará es desde A6:D6.
Range(“A6”, “D6”).Value = “valor6”
Propiedad Cells
La propiedad Cells funciona similar al objeto Range, solo que Cells nos pedirá las coordenadas en base a una fila (RowIndex) y a una columna (ColumnIndex).
Cells(7, 2).Value = “valor7” es lo mismo que Range(“B7”).Value = “valor7”
A su vez Cells también tiene propiedades, por ejemplo podemos limpiar el contenido de todas las celdas de una hoja usando:
Cells.Clear
O ajustar el ancho de todas las columnas de una hoja usando:
Cells.EntireColumn.AutoFit
En el siguiente ejemplo separamos las referencias de las letras de las columnas, de los números de filas. Esto será para que cuando entremos al tema de Ciclos o Iteraciones sea más fácil trabajar con rangos.
Range(“C” & 8 & “:” & “E” & 8).Value = “valor8”
El objeto Range tiene propiedades y una de ellas es la propiedad Cells. En el siguiente ejemplo tenemos el rango A10:E11, pero a su vez tenemos la propiedad Cells(2,3). Esto significa que dentro de A10:E11 nos vamos a mover 2 filas hacia abajo y 3 columnas hacia la derecha, dando como resultado el rango C11.
Range(“A10:E11”).Cells(2, 3).Value = “valor10”
Propiedad Offset
La propiedad Offset en VBA trabaja muy similar a la función DESREF, ya nos permite tener una referencia de filas y columnas en base a una referencia definida. En el siguiente ejemplo, nuestra referencia dada es la celda A1, y con Offset nos movemos 11 filas hacia abajo y 3 columnas hacia la derecha, por lo que la celda fila serán D12.
Range(“A1”).Offset(11, 3).Value = “valor11”
Referencias de Filas y Columnas. Rows y Columns.
En el siguiente ejemplo haremos referencia a las filas 14 y 15 dentro de Range, y vamos a cambiarle el alto de las filas a 30. Posteriormente haremos lo mismo, modificando las propiedades EntireRow y RowHeight, pero ahora modificando la propiedad Rows.
Range(“14:15”).EntireRow.RowHeight = 30
Rows(“14:15”).RowHeight = 40
En los siguiente ejemplo haremos lo mismo en que el ejemplo anterior, pero aplicado a columnas, solo que ahora usaremos las propiedades EntireColumn y ColumnWidth para modificar el ancho de columnas.
Range(“E:E”).EntireColumn.ColumnWidth = 5
Columns(5).ColumnWidth = 20
Referencia a nombres definidos
Por últimos veremos cómo hacer referencias a nombres definidos en Excel.
- Elegimos la celda A14.
- En la parte superior izquierda, en la barra de nombres ingresamos CeldaPrueba.
Al tener nuestro nombre definido, solo resta hacer referencia a él usando Range.
Range(“CeldaPrueba”).Value = “celdaPrueba”
Descargar archivo de ejemplo
009 – Referencia y escritura de celdas, rangos, filas y columnas.zip
Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.