Está en la página 1de 8

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”
Propiedades de rangos y celdas
Recordemos que las propiedades son características que describen a los
objetos y los objetos en VBA pueden ser rangos de celdas, hojas, archivos,
gráficos, etc.
Las propiedades en VBA pueden ser de 3 tipos, solo lectura, solo escritura o
lectura escritura. En la siguiente tabla vemos las propiedades más
usadas para rangos de celdas.
NOMBRE DESCRIPCIÓN TIPO

Address Devuelve la referencia a un rango de celdas Sólo lectura

Columns Devuelve las columnas de un rango Sólo lectura

Rows Devuelva la filas de un rango Sólo lectura

Devuelve el conteo de celdas de un rango. Aplica para columnas y


Count Sólo lectura
filas

Región activa con respecto a un rango. De manera manual lo


CurrentRegion Sólo lectura
obtenemos usando Control + Shift + Espacio

EntireRow Hace referencia a una fila completa Sólo lectura

EntireColumn Hace referencia a una columna completa Sólo lectura

Lectura /
Font Permite leer o modificar el formato de celdas
escritura

Devuelve o escribe fórmulas de celdas. Debemos usar el nombre de Lectura /


Formula
funciones en Inglés escritura

Podemos asignarle una fórmula a las celdas en el idioma configurado Lectura /


FormulaLocal
en la PC escritura

HasFormula Devuelve VERDADERO si la celda contiene una fórmula Sólo lectura

Lectura /
Interior Permite formatear el fondo de un rango de celdas
escritura

NumberFormat Permite asignar un formato de número a un rango celdas Lectura /


escritura

Nos permite desplazarnos n cantidad de filas o columnas. DESREF en Lectura /


Offset
Excel escritura

Resize Permite cambiar el tamaño de una rango Sólo lectura

Lectura /
Value Devuelve o escribe un valor en un rango de celdas
escritura

Address. Devolvemos la dirección de un rango. En este caso


devolveremos la referencia de la propiedad Selection.
MsgBox Application.Selection.Address

Columns, Rows. Haremos un conteo de filas y columnas, aplicando la


propiedad Count.
MsgBox Range(“A1:D2”).Columns.Count

MsgBox Range(“A1:D2”).Rows.Count

Count. Devolveremos un conteo de celdas en un rango.


MsgBox Range(“A1:D2”).Count

CurrentRegion. Mostraremos la dirección del rango actual en base a la


celda A1.
MsgBox Range(“A1”).CurrentRegion.Address

EntireRow y EntireColumn. Insertaremos y eliminaremos filas y


columnas completas
Range(“F1”).EntireColumn.Insert

Range(“F1”).EntireColumn.Delete

Range(“F1”).EntireRow.Insert

Range(“F1”).EntireRow.Delete

Font. Le cambiamos la fuente a una celda.


Cells(1,1).Font.Size = 20

Cells(1,1).Font.Name = Arial
Formula. Le asignamos una fórmula a un rango de celdas. Los
nombres de las funciones deber ser en Ingles.
Range(“A1:A10”).Formula = “=SUM(10,20)”

FormulaLocal. Insertaremos una fórmula en un rango de celdas


expresada en el idioma la de la PC, en este caso español.
Range(“B1:B10”).FormulaLocal = “=SUMA(10,20)”

HasFormula. Esta propiedad nos devuelve VERDADERO si el rango


contiene una fórmula, de lo contrario devuelve FALSO.
MsgBox Range(“A1”).HasFormula

Interior. Le asignaremos color azul a un rango de celdas expresadas


con la propiedad vbBlue.
Range(Cells(1, 1), Cells(5, 5)).Interior.Color = VBA.vbBlue

NumberFormat. Cambiamos formato de texto a una celda, le


asignaremos formato de fecha.
Range(“A1”).NumberFormat = “yyyy/mm/dd”

Offset. Activaremos un rango en referencia a la celda A1. Nos


moveremos 10 filas hacia abajo y 10 columnas hacia la derecha.
Range(“A1”).Offset(10, 10).Select

Resize. Tenemos un rango de 10 filas y 10 columnas, le cambiaremos


el tamaño y le asignaremos un color de fondo.
Range(“A1:B10”).Resize(5, 5).Interior.Color = RGB(200, 150, 109)

Value. Vamos a mostrar un valor de una celda.


MsgBox Range(“A1”).Value

EJEMPLOS
En este ejemplo le pondremos color verde a los encabezados de una
tabla.

Sub Encabezado()
Dim razgo As Range

Set rango = Range("a1").CurrentRegion

'rango.Resize(1, rango.Columns.Count).Select

'rango.Resize(1, rango.Columns.Count).Interior.Color =
VBA.vbGreen

End Sub

Y ahora le ponemos un color amarillo al cuerpo de la tabla.

Sub CuerpoTabla()

Dim rango As Range

Set rango = Range("a1").CurrentRegion

'Range("A1").Offset(1, 0).Resize(rango.Rows.Count - 1,
rango.Columns.Count).Select

'Range("A1").Offset(1, 0).Resize(rango.Rows.Count - 1,
rango.Columns.Count).Interior.Color = VBA.vbYellow

End Sub

Usaremos la siguiente instrucción para borrar formatos de las celdas.

Range(“a1”).CurrentRegion.ClearFormats

También podría gustarte